【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(下)
2012-06-25 17:42
1171 查看
示例代码段2:
Xcode 代码:
Android(Java) 代码:
运行截图:
示例代码段3:
Xcode 代码:
Android(Java) 代码:
运行截图:
示例代码段4:
Xcode 代码:
Android(Java) 代码:
运行截图:
示例代码段5:
Xcode 代码:
Java 代码:
运行截图:
Xcode 代码:
//静态函数示例2.有参数,无返回值------------------------------$$$$$$$-------------------------------- #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台 JniMethodInfo minfo;//定义Jni函数信息结构体 //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数 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) 代码:
// 静态函数示例2.有参数,无返回值 public static void testFunWithInt(int _int) { Log.e("Himi", "静态函数示例1.有参数,无返回值;传入的参数int=" + _int); }
运行截图:
示例代码段3:
Xcode 代码:
//静态函数示例3.有参数,有返回值--------------------------------$$$$$$$-------------------------------- #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台 JniMethodInfo minfo;//定义Jni函数信息结构体 //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数 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); //尝试jint是否能正常接收返回的int值 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) 代码:
// 静态函数示例3.有参数,有返回值 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;//定义Jni函数信息结构体 //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数 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) 代码:
// 静态函数示例4.有参数,有返回值(String类型) 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;//定义Jni函数信息结构体 //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数 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"); }
运行截图:
相关文章推荐
- 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- 【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(上)
- Cocos2d-x游戏开发之Cocos2dx通过JNI调用Android的Java代码(webView实例)
- VS2010 通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- 【iOS-cocos2d-X 游戏开发之七】整合Cocos2dX的Android项目到Xcode项目中,Xcode编写&编译代码,Android导入打包运行即可!
- cocos2dx:C++层通过JniHelper调用JAVA层代码进而调用Android手机应用接口
- Cocos2d-x3.3RC0通过JNI调用Android的Java层代码,实现分享功能
- Cocos2d-x学习之通过Jni调用Android的Java层代码
- iOS-cocos2d-X 游戏开发之七】整合Cocos2dX的Android项目到Xcode项目中,Xcode编写&编译代码,Android导入打包运行即可!
- Android游戏开发cocos2d-x调用Java层代码
- Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信
- cocos2dx通过Jni调用Android的Java层代码(下)
- cocos2dx通过Jni调用Android的Java层代码(上)
- Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信
- Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- Cocos2d-x中通过JNI进行C++调用Java代码
- JNI开发第二篇通过反射实现C中调用java代码,并实现Log打印日志
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java