JNI實戰

鍋爐壓力的監控器 




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();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章