示例代码段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. }

运行截图:

示例代码段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. }

运行截图:

示例代码段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. }

运行截图:

示例代码段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. }

运行截图:




更多相关文章

  1. C语言函数的递归(上)
  2. Android(安卓)Camera Framework层分析
  3. vold.fstab DirectVolume
  4. Android培训班(110)start_kernel函数7
  5. Android(安卓)利用三阶贝塞尔曲线绘制运动轨迹的示例
  6. Android(安卓)StateMachine和AsyncChannel
  7. openssl移植android
  8. Android(安卓)修改默认按键不震动
  9. 工作笔记-code

随机推荐

  1. 如何从其他dtypes创建一个numpy dtype?
  2. 独立于数据库的MAX()函数在SQLAlchemy中
  3. 使用python api递归计算每个Dropbox文件
  4. Python为8bit深度图像应用color map
  5. 可变序列长度数据的分类
  6. 'str'对象不能解释为groupby上的整数
  7. 基于Python的XSS测试工具XSStrike使用方
  8. 乘客的Django应用程序显示空主页
  9. 如何用所有可能的方式将一个列表分割成对
  10. 安装:Ubuntu12.04+Python3+Django1.7.9过