国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android JNI c/c++調用java的實例

2019-12-12 02:28:41
字體:
來源:轉載
供稿:網友

Android JNI c/c++調用java的實例

近期通過研究SDL源碼 得出Android JNI  c/c++調用Java 無需新建虛擬機,這樣省去很多步驟,這樣調用Android JNI會變得非常容易,大家看下簡單實例:

具體步驟如下

第一步獲得:兩個參數 JNIEnv和jclass

void Java_com_Test_Audio_Init( JNIEnv* env,jclass cls, jobject thiz ) {  InitJNI(env,cls); } bool InitJNI(JNIEnv* env,jclass cls) {  m_Env=env;  m_cls=cls;  } 

第二步

獲得java那邊定義的函數的名字

jmethodID midCreateGLContext = env->GetStaticMethodID(cls,"Test_Audio","([B)Z"); midCreateGLContext = m_Env->GetStaticMethodID(m_cls,"Test_Audio","([B)Z"); midInitSound=m_Env->GetStaticMethodID(m_cls,"init","()V"); midLoadSound=m_Env->GetStaticMethodID(m_cls,"load","(Ljava/lang/String;I)V"); midLoadMedia=m_Env->GetStaticMethodID(m_cls,"load","(Ljava/lang/String;)V"); 

ava類型      對應的簽名
boolean Z
byte B
char C
shrot S
int I
long L
float F
double D
void V
Object L用/分割包的完整類名;  Ljava/lang/String;
Array [簽名       [I       [Ljava/lang/String;

第三步 傳遞參數調用java 函數

char *str="god_is_a_girl.mp3"; char str[]="nihao";  jbyte *by = (jbyte*)str;  jbyteArray jarray = m_Env->NewByteArray(strlen(str));  m_Env->SetByteArrayRegion(jarray, 0, strlen(str), by); ///調用java函數  m_Env->CallStaticBooleanMethod(m_cls, midCreateGLContext,jarray); 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定州市| 渑池县| 临洮县| 额敏县| 宝应县| 满洲里市| 毕节市| 津市市| 凌海市| 珠海市| 东明县| 万源市| 礼泉县| 尼玛县| 天全县| 平顶山市| 敖汉旗| 景宁| 广东省| 云霄县| 三河市| 桐柏县| 彰化县| 资溪县| 禄丰县| 柳林县| 堆龙德庆县| 民权县| 林芝县| 洛川县| 揭阳市| 丹棱县| 平罗县| 宁乡县| 龙游县| 章丘市| 通化县| 雷波县| 新乐市| 舒城县| 金塔县|