Android-JNI3

来源:互联网 发布:c 数组的长度 编辑:程序博客网 时间:2024/06/12 00:56
一、
  1. 使用已经存在的.so
    • 直接 load 加载 去前后缀的 .so 文件
  2. 概念
    • c代码是运行在linux下的进程的,而不是java虚拟机
  3. 锅炉压力监控器
    • 调用c工程师写好的代码,使用Timer计时器在Handler中监控压力值的变化,对压力值进行Paint画图。
    • 如果压力值 过大,进行 警报,发短信等操作。
  4. c++和 c的区别
    • c语言:(*env)->NewStringUTF( env, " heihei from c");
    • c++:扩展名为 .cpp, env->NewStringUTF( "heihei from cpp" );
  5. ndk开发的中文乱码问题
    • 修改工程或某个文件的编码为UTF-8
    • 老版本的ndk r7之前 r6 r5 r5 crystal r4(编译的时候 语言集 是iso-8859-1),在使用老版本ndk 编译出来的so文件的时候 要手动的进行转码.
      • 例:   String  result = callMethodFromc();
      • result = new String( result.getBytes( "iso-8859-1") , "UTF-8 " );
  6. 文件格式
二、
  1. 使用开源的lame获取版本信息
    • 需要 lame-3.99.4\libmp3lame文件夹下的所有文件及include下的lame.h头文件,将非 .c / .h 的文件删除
    • 在实现本地方法的c代码中 return (*env)->NewStringUTF( env , get_lame_version());
    • Android.mk中配置 所有的 .c  .h文件
    • 需要修改 util.h 头文件的第574行的一个float
  2. wav转mp3,工具类
    • 需要配置权限,否则 出现大量DEBUG信息
      • android.permission.WRITE_EXTERNAL_STORAGE
      • android.permission.MOUNT_UNMOUNT_FILESYSTEMS
  3. 通知UI界面更新进度条
    • 设置pd的style:pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    • 设置进度条总大小:pd.setMax((int) file.length());
    • 设置进度:用c代码调用java代码(反射)实现,该c代码在循环读写文件中被调用
    • 转换完成后, pd. dismiss();
    • 用户点击返回键,响应停止转换的操作:c代码中定义一个 flag,当flag==0时,return,让循环终止。
      • 定义一个本地方法( c实现时将flag==0 ),监听pd.setOnCancle..,调用本地方法
原创粉丝点击