在cocos2dx里访问/互调android里的activity方法/变量
来源:互联网 发布:阿里巴巴一键传淘宝 编辑:程序博客网 时间:2024/06/04 19:25
在cocos2dx里访问/互调android里的activity方法/变量
不得不感叹下COCOS2DX的强大。。同一份游戏代码不加改动的可以放到android和iphone上面。
而最近在往ANDROID上放的时候,需要集成其它非官方运营渠道的API,而对方提供的API是jar包。所以需要在cocos2dx C++源文件中调用JAVA的API,因此有了以下DEMO代码:
activity里有如下定义:
而最近在往ANDROID上放的时候,需要集成其它非官方运营渠道的API,而对方提供的API是jar包。所以需要在cocos2dx C++源文件中调用JAVA的API,因此有了以下DEMO代码:
activity里有如下定义:
- public void cppCall_nonStatic_logsth(){
- //非静态方法
- Log.i("cppCall_nonStatic", "test2~~~~!!!");
- }
- public static Object cppCall_logsth(){
- //静态方法
- Log.i("cppCall", "test~~~~!!!");
- return activity;
- }
public void cppCall_nonStatic_logsth(){//非静态方法Log.i("cppCall_nonStatic", "test2~~~~!!!");}public static Object cppCall_logsth(){//静态方法Log.i("cppCall", "test~~~~!!!");return activity;}
AppDelegate.cpp里:
加上预定义(for android)
- #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
- #include <jni.h>
- #include <JniHelper.h>
- #include <android/log.h>
- #if 1
- #define LOG_TAG "JniHelper"
- #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
- #else
- #define LOGD(...)
- #endif
- #endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)#include <jni.h>#include <JniHelper.h>#include <android/log.h>#if 1#define LOG_TAG "JniHelper"#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)#else#define LOGD(...) #endif#endif
关键代码片段:
JniMethodInfo minfo; jobject jobj; bool b = JniHelper::getStaticMethodInfo(minfo, "com/loy/puzzles/Puzzles", //类路径 "cppCall_logsth", //静态方法名 "()Ljava/lang/Object;"); //括号里的是参数,后面的是返回值。 if (!b) { LOGD("JniHelper::getStaticMethodInfo error..."); }else{ jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID); } JniHelper::getMethodInfo(minfo, "com/loy/puzzles/Puzzles", "cppCall_nonStatic_logsth", "()V"); if(!b){ LOGD("JniHelper::getMethodInfo error..."); }else{ LOGD("ready to invoke method..."); minfo.env->CallVoidMethod(jobj, minfo.methodID); }
最终LOGCAT打印日志如下:
12-29 12:46:33.891: D/JniHelper(2008): testing~~~
12-29 12:46:33.891: I/cppCall(2008): test~~~~!!!
12-29 12:46:33.891: D/JniHelper(2008): ready to invoke method...
12-29 12:46:33.891: I/cppCall_nonStatic(2008): test2~~~~!!!
12-29 12:46:33.891: D/JniHelper(2008): testing over~~~
转载地址:http://donnki.iteye.com/blog/1329336
0 0
- 在cocos2dx里访问/互调android里的activity方法/变量
- 在cocos2dx里访问/互调android里的activity方法/变量
- 在Android中不允许Activity里新启动线程访问该Activity里的组件
- Android 在ListView的adapter里调用 activity里的方法
- cocos2dx里访问调用Android函数
- cocos2dx里访问调用Android函数
- 在一个activity里关闭另外一个activity的方法
- 方法里的局部内部类为什么不能访问一般的方法里的局部变量?
- 方法里的局部内部类为什么不能访问一般的方法里的局部变量?
- 方法里的局部内部类不能访问一般的方法里的局部变量
- android关于声明不同的activity在androidmanifest.xml里
- Android里Activity和Activity的生命周期
- Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- VS2010 通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- android中的activity里获得context方法
- android中的activity里获得context方法
- 在activity里获取listview条目里的子控件
- 在activity里获取adapter的控件
- 获取系统当前时间C/C++
- Makefile的.a 文件的依赖关系
- Mybatis与Hibernate的比较
- linux挂载 安装 fstab 详解
- openwrt编译curl及错误解决
- 在cocos2dx里访问/互调android里的activity方法/变量
- gdb中调试stl
- Sprite添加阴影摇摆动画(Unity3D开发之九)
- python 三元表达式
- 在中国,Linux取代window需要解决的几大问题
- .NET DllImport特性
- 将Open SSH Server 移植到ARM Linux成功
- Kids and Prizes(概率+期望)
- php表单操作