示例代码段2:

Xcode 代码:



  
  1. //静态函数示例2.有参数,无返回值------------------------------$$$$$$$--------------------------------

  2. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台

  3.    JniMethodInfo minfo;//定义Jni函数信息结构体

  4. //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数

  5. bool isHave = JniHelper::getStaticMethodInfo(minfo,

  6. "com/ai/ommr/OhMonsterMR4Android", "testFunWithInt","(I)V");  

  7. if (!isHave) {

  8.        CCLog("jni:此函数不存在");

  9.    }else{

  10.        CCLog("jni:此函数存在");

  11. //调用此函数

  12.        minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID,823);

  13.    }

  14.    CCLog("jni-java函数执行完毕");

  15. #endif

Android(Java) 代码:


  
  1. // 静态函数示例2.有参数,无返回值

  2. publicstaticvoid testFunWithInt(int _int) {

  3.    Log.e("Himi", "静态函数示例1.有参数,无返回值;传入的参数int=" + _int);

  4. }

运行截图:

111.png
示例代码段3:

Xcode 代码:



   
  1. //静态函数示例3.有参数,有返回值--------------------------------$$$$$$$--------------------------------

  2. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台

  3.    JniMethodInfo minfo;//定义Jni函数信息结构体

  4. //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数

  5. bool isHave = JniHelper::getStaticMethodInfo(minfo,

  6. "com/ai/ommr/OhMonsterMR4Android","testFunWithIntAndRtn","(I)I");

  7. jint _int ;

  8. if (!isHave) {

  9.    CCLog("jni:此函数不存在");

  10. }else{

  11.    CCLog("jni:此函数存在");

  12. //调用此函数

  13.    _int = minfo.env->CallStaticIntMethod(minfo.classID, minfo.methodID,823);

  14. //尝试jint是否能正常接收返回的int值

  15.    JniMethodInfo minfo_ty;

  16. bool isHave = JniHelper::getStaticMethodInfo(minfo_ty, "com/ai/ommr/OhMonsterMR4Android", "testFunWithInt",  "(I)V");

  17. if (isHave) {

  18.         minfo_ty.env->CallStaticVoidMethod(minfo_ty.classID, minfo_ty.methodID,_int);

  19.     }

  20. }

  21. CCLog("jni-java函数执行完毕");

  22. #endif

Android(Java) 代码:





  
  1. // 静态函数示例3.有参数,有返回值

  2. publicstaticint testFunWithIntAndRtn(int _int) {

  3.    Log.e("Himi", "静态函数示例1.有参数,有返回值;传入的参数int=" + _int);

  4. return _int+1000;

  5. }

运行截图:

2222.png
示例代码段4:

Xcode 代码:



   
  1. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台

  2.    JniMethodInfo minfo;//定义Jni函数信息结构体

  3. //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数

  4. bool isHave = JniHelper::getStaticMethodInfo(minfo,  "com/ai/ommr/OhMonsterMR4Android","testFunWithStringAndRtn","(I)Ljava/lang/String;");

  5.    jobject jobj;

  6. if (!isHave) {

  7.        CCLog("jni:此函数不存在");

  8.    }else{

  9.        CCLog("jni:此函数存在");

  10. //调用此函数

  11.        jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID,823);

  12.    }

  13.    CCLog("jni-java函数执行完毕");

  14. #endif

Android(Java) 代码:





  
  1. // 静态函数示例4.有参数,有返回值(String类型)

  2. publicstatic String testFunWithStringAndRtn(int _int) {

  3.    Log.e("Himi", "静态函数示例4.有参数,有返回值(String类型);int=" + _int);

  4. return"yes,return 'String' is OK --by Himi";

  5. }

运行截图:

3333.png
示例代码段5:

Xcode 代码:



  
  1. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台

  2.    JniMethodInfo minfo;//定义Jni函数信息结构体

  3. //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数

  4. bool isHave = JniHelper::getStaticMethodInfo(minfo,

  5. "com/ai/ommr/OhMonsterMR4Android",  //类的路径

  6. "rtnActivity",   //方法名

  7. "()Ljava/lang/Object;");   //括号里的是参数,后面的是返回值。

  8.    jobject jobj;

  9. if (isHave) {

  10.       jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);

  11.    }

  12.    CCLog("正确获取到 jobj");

  13. //

  14.    isHave = JniHelper::getMethodInfo(minfo,

  15. "com/ai/ommr/OhMonsterMR4Android",  //类的路径

  16. "nostaticFun",   //方法名

  17. "()V");   //括号里的是参数,后面的是返回值。  

  18. if (isHave) {

  19.         minfo.env->CallVoidMethod(jobj, minfo.methodID);

  20.    }

  21.     CCLog("jni-java函数执行完毕");

  22. #endif

Java 代码:





  
  1. //---- 函数示例之非静态函数调用

  2. //(先获取个对象)

  3. publicstatic Activity actInstance;//定义单例

  4. publicstatic Object rtnActivity() {

  5. return actInstance;

  6. }

  7. //使用此对象进行调用非静态函数

  8. publicvoid nostaticFun() {

  9.    Log.e("Himi", "no static Function is OK - By Himi");

  10. }

运行截图:

4444.png