一、
- 使用已经存在的.so
- 直接 load 加载 去前后缀的 .so 文件
- 概念
- c代码是运行在linux下的进程的,而不是java虚拟机
- 锅炉压力监控器
- 调用c工程师写好的代码,使用Timer计时器在Handler中监控压力值的变化,对压力值进行Paint画图。
- 如果压力值 过大,进行 警报,发短信等操作。
- c++和 c的区别
- c语言:(*env)->NewStringUTF( env, " heihei from c");
- c++:扩展名为 .cpp, env->NewStringUTF( "heihei from cpp" );
- 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 " );
- 文件格式
- 使用开源的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
- wav转mp3,工具类
- 需要配置权限,否则 出现大量DEBUG信息
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.MOUNT_UNMOUNT_FILESYSTEMS
- 需要配置权限,否则 出现大量DEBUG信息
- 通知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..,调用本地方法