示例代码段2:
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
- // 静态函数示例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
- // 静态函数示例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 代码:
Java 代码:
- #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
- //---- 函数示例之非静态函数调用
- //(先获取个对象)
- 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,如需转载请自行联系原作者