Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android ndk c代碼調用java的代碼

android ndk c代碼調用java的代碼

編輯:關於Android編程

這裡簡單說一下ndk中c調用java的方法     至於ndk的環境搭建這裡就不說了,有空會貼上來     java調c的感覺相對比較簡單,以後有空一並貼上來,這裡說下 c去回調java的代碼了     首先創建工程就不說了,我們這裡展開一個經典例子  helloworld  哈哈哈   第一步,在android工程中 建一個類,裡面放個方法,syso一個helloworld。同時建議建立一個activity,這樣可以放一個按鈕,點擊的時候可以看到效果   這裡稍微展開下       1:寫一個java方法   public void helloFromJava(){   System.out.println("helloFromJava"); } 2:寫對應的native方法      static{ System.loadLibrary("Hello");   }   public native void callback1(); 3:實現一下調用,放在按鈕中去調用,就不說啦     4:這裡需要用javah實現一下C頭文件的生成,當然也可以不這麼做,另外的方法我就不展開了         第二部 在ndk中建立C文件啦   #include <jni.h> #include "com_itheima15_ndk4_DataProvider.h"  //這個頭文件由  jdk 中的javah生成,相信來看這個的,就不需要介紹javah怎麼用了哦   //日志模塊,習慣性的放一個日志模塊,方便去調試 #include <android/log.h> #define LOG_TAG "System.out" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)     JNIEXPORT void JNICALL Java_com_xuchulong_ndk4_DataProvider_callback1   (JNIEnv * env, jobject obj){ //C調用java空方法 /* * 1、 找到該方法存在哪個類中(找到存在該方法的類) * 2、在該類中找到該方法 * 3、執行該方法 * */ char* classname = "com/xuchulong/ndk4/DataProvider";//這個是我的類名,根據自己情況放,我的helloworld就放在這個裡面的     //第一步 找到該類 //  jclass      (*FindClass)(JNIEnv*, const char*); jclass clazz = (*env)->FindClass(env, classname);     //第2步  在該類中找到該方法 // jmethodID   (*GetMethodID)(JNIEnv*, jclass, const char*, const char*); // jclass 在那個類中查找 // const char* 查找的方法名稱 // const char* 方法的簽名     jdk   javap -s 得到方法的簽名 使用方法: javap -s 包名.類名 jmethodID method = (*env)->GetMethodID(env, clazz, "helloFromJava", "()V");     //執行該方法 //void        (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...); (*env)->CallVoidMethod(env, obj, method); }   好了C代碼部分完成了 ndk-build一下哦,呵呵    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved