android ndk c代碼調用java的代碼

來源:互聯網
上載者:User

這裡簡單說一下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一下哦,呵呵  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.