Cocos2d-x中提供了一个JniHelper类来让我们对Jni进行操作。
(PS:弄了一天想自己写代码操作Jni的,但是总是出错,技术差不得不使用Cocos2d-x现成的了)。
我们有一个Android工程 :CocosDemoAndroid
还有一个Win32工程:Cocos2dDemo.win32
这个是必备的。。。
在C++ Win32工程中有一个Scene,点击按钮调用Jni函数。
- voidCallJni::getInputCallBack(CCObject*pSender)
- {
- g_AndroidPlatform.showDialog();
- }
这个 g_AndroidPlatform.showDialog(); 在这个函数里面 使用JniHelper类来使用Jni 。
- voidAndroidPlatform::showDialog()
- {
- CCLog("showDialog");
- #ifdefANDROID
- //下面是利用jnihelper类来调用AndroidStatic
- JniMethodInfomethodInfo;//jni函数信息结构体
- /*getStaticMethodInfo获取到MethodId和ClassId,ClassID通过穿进去的Activity即类名获取,MethodId通过函数名获取*/
- boolisHave=JniHelper::getStaticMethodInfo(methodInfo,"com/example/cocosdemoandroid/MainActivity","showMessage","()V");
- if(isHave)
- {
- /*调用这个函数*/
- methodInfo.env->CallStaticVoidMethod(methodInfo.classID,methodInfo.methodID);
- }
- #endif
- }
C++层关键的代码就是这两个了,在使用JniHelper的时候不要忘记加上头文件
copy
- #include<jni.h>
- #include"platform/android/jni/J