示例代码段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层代码(下)的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。