现在的位置: 首页 > 综合 > 正文

JNI实战

2018年05月17日 ⁄ 综合 ⁄ 共 1123字 ⁄ 字号 评论关闭

锅炉压力的监控器 

code.google.com

code.taobao.org

sourceforge.net

grepcode.com

1.假的进度条
2M wav -> MP3  200K
99% ~ 100%

2.真的进度条.
准确的知道 转化的百分比  

C用反射调用JAVA,需要用到方法签名。

C、C++的区别?在做JNI开发的时间,写法会有些差异。
1、要在Android.mk文件中多一个配置。
2、C++语法上略有不同。

 LOCAL_PATH := $(call my-dir)

   include $(CLEAR_VARS)
   #这个是对C++配置。
   LOCAL_CPP_EXTENSION := cpp 
   LOCAL_MODULE    := Hello
   LOCAL_SRC_FILES := Hello.c
LOCAL_LDLIBS += -llog
   include $(BUILD_SHARED_LIBRARY)
   
//return (*env)->NewStringUTF(env,"haha from c");
return      env->NewStringUTF("haha from c++");

JNI最重要就是打通数据通信。JAVA如何给C传参数并返回相应的结果。
如果C想调用JAVA的方法要用方法签名。

MP3转化器,JAVA调用C去转码,C再调用JAVA去更新UI。

运用纯C语言开发手机应用。不过自己订制的可以用。因为它可以
直接编译成ARM下可以运行的。ELF是二进制下可以执行文件的文件头。
其实就是直接生成在ARM架构下的二进制可执行文件,因为JAVA可以直接
执行这些可执行文件,所以就可以用了。
 try {
        //Process  process = Runtime.getRuntime().exec("/data/data/hello");
        Process  process = Runtime.getRuntime().exec("date");
        InputStream is = process.getInputStream();
        DataInputStream dis = new DataInputStream(is);
        String result ;
        StringBuilder sb = new StringBuilder();
        while((result = dis.readLine())!=null){
        sb.append(result);
        sb.append("\n");
        }
        System.out.println(sb.toString());
       
} catch (Exception e) {
e.printStackTrace();
}

抱歉!评论已关闭.