?示例代碼段2:
Xcode 代碼:
?
?#if?(CC_TARGET_PLATFORM?==?CC_PLATFORM_ANDROID)?//判斷當前是否為Android平臺?????JniMethodInfo?minfo;??????????bool?isHave?=?JniHelper::getStaticMethodInfo(minfo,?????????????????????????????????????????????????"com/ai/ommr/OhMonsterMR4Android",?"testFunWithInt","(I)V");?????????if?(!isHave)?{?????????CCLog("jni:此函數不存在");?????}else{?????????CCLog("jni:此函數存在");??????????????????minfo.env->CallStaticVoidMethod(minfo.classID,?minfo.methodID,823);?????}?????CCLog("jni-java函數執行完畢");?#endif?Android(Java) 代碼:
?public?static?void?testFunWithInt(int?_int)?{?????Log.e("Himi",?"靜態函數示例1.有參數,無返回值;傳入的參數int="?+?_int);?}? 運行截圖:
示例代碼段3: Xcode 代碼:
?
?#if?(CC_TARGET_PLATFORM?==?CC_PLATFORM_ANDROID)?//判斷當前是否為Android平臺?????JniMethodInfo?minfo;????bool?isHave?=?JniHelper::getStaticMethodInfo(minfo,??????????????????????????????????????????????"com/ai/ommr/OhMonsterMR4Android","testFunWithIntAndRtn","(I)I");?jint?_int?;?if?(!isHave)?{?????CCLog("jni:此函數不存在");?}else{?????CCLog("jni:此函數存在");??????????_int?=?minfo.env->CallStaticIntMethod(minfo.classID,?minfo.methodID,823);????????????JniMethodInfo?minfo_ty;?????bool?isHave?=?JniHelper::getStaticMethodInfo(minfo_ty,?"com/ai/ommr/OhMonsterMR4Android",?"testFunWithInt",??"(I)V");??????if?(isHave)?{??????????minfo_ty.env->CallStaticVoidMethod(minfo_ty.classID,?minfo_ty.methodID,_int);??????}???}?CCLog("jni-java函數執行完畢");?#endif? Android(Java) 代碼:
?
?public?static?int?testFunWithIntAndRtn(int?_int)?{?????Log.e("Himi",?"靜態函數示例1.有參數,有返回值;傳入的參數int="?+?_int);?????return?_int+1000;?}? 運行截圖:
示例代碼段4: Xcode 代碼:
?
#if?(CC_TARGET_PLATFORM?==?CC_PLATFORM_ANDROID)?//判斷當前是否為Android平臺?????JniMethodInfo?minfo;??????????bool?isHave?=?JniHelper::getStaticMethodInfo(minfo,??"com/ai/ommr/OhMonsterMR4Android","testFunWithStringAndRtn","(I)Ljava/lang/String;");?????jobject?jobj;?????if?(!isHave)?{?????????CCLog("jni:此函數不存在");?????}else{?????????CCLog("jni:此函數存在");??????????????????jobj?=?minfo.env->CallStaticObjectMethod(minfo.classID,?minfo.methodID,823);?????}?????CCLog("jni-java函數執行完畢");?#endif? Android(Java) 代碼:
?
?public?static?String?testFunWithStringAndRtn(int?_int)?{?????Log.e("Himi",?"靜態函數示例4.有參數,有返回值(String類型);int="?+?_int);?????return?"yes,return?'String'?is?OK?--by?Himi";?}? 運行截圖:
示例代碼段5: Xcode 代碼:
?
#if?(CC_TARGET_PLATFORM?==?CC_PLATFORM_ANDROID)?//判斷當前是否為Android平臺?????JniMethodInfo?minfo;??????????bool?isHave?=?JniHelper::getStaticMethodInfo(minfo,?????????????????????????????????????????????????"com/ai/ommr/OhMonsterMR4Android",???????????????????????????????????????????????????"rtnActivity",????????????????????????????????????????????????????"()Ljava/lang/Object;");????????jobject?jobj;?????if?(isHave)?{????????jobj?=?minfo.env->CallStaticObjectMethod(minfo.classID,?minfo.methodID);?????}?????CCLog("正確獲取到?jobj");????????????isHave?=?JniHelper::getMethodInfo(minfo,??????????????????????????????????????????????????"com/ai/ommr/OhMonsterMR4Android",????????????????????????????????????????????????????"nostaticFun",?????????????????????????????????????????????????????"()V");??????????if?(isHave)?{??????????minfo.env->CallVoidMethod(jobj,?minfo.methodID);?????}??????CCLog("jni-java函數執行完畢");?#endif?Java 代碼:
?
??public?static?Activity?actInstance;?public?static?Object?rtnActivity()?{?????return?actInstance;?}??public?void?nostaticFun()?{?????Log.e("Himi",?"no?static?Function?is?OK?-?By?Himi");?}? 運行截圖:
本文轉自 xiaominghimi 51CTO博客,原文鏈接:http://blog.51cto.com/xiaominghimi/908818,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。