您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x 移植android 植入计费,广告模块

2012-06-07 09:59 281 查看
陶恒原创,欢迎转载。转载请注明: 转载自csdn,谢谢!

原文地址: /article/11517108.html

1.cocos2d-x 移植android植入计费、广告模块,首先要想到要从C++调用java模块,C++调用java很简单使用JNI

1.1 首先要确认调用的java代码存在(android项目的src目录下,还没有就自己创建)

参考:http://www.cocos2dev.com/?p=151

1、导入头文件

1
#include
<jni.h>
2
3
#include
"platform/android/jni/JniHelper.h"
2、实现方法:

查看源代码

打印帮助

01
JniMethodInfo
t;
02
03
if
(JniHelper::getStaticMethodInfo(t
04
05
,
"com/cocos2dev/JNIDemo/FMJNIHelp"
06
07
,
"starPayMoney"
08
09
,
"(Ljava/lang/String;Ljava/lang/String;)V"
))
10
11
{
12
13
jstring
stringArg1 = t.env->NewStringUTF(
"2"
);
//
$
14
15
jstring
stringArg2 = t.env->NewStringUTF(
"10"
);
//
count
16
17
t.env->CallStaticVoidMethod(t.classID,
t.methodID, stringArg1, stringArg2);
18
19
t.env->DeleteLocalRef(stringArg1);
20
21
t.env->DeleteLocalRef(stringArg2);
22
23
t.env->DeleteLocalRef(t.classID);
24
25
}
注意:

C++这边请注意一下c++这边方法申明的命名规则,JNIDemo表示java那边方法所在类名,com_cocos2dev_test_该类的包名。nativePaySuccess方法名。
参数规则参考:http://zzqrj.iteye.com/blog/1285262

2.计费成功之后很自然的想到要把结果反馈回来,所以用到java调动C++

参考:http://www.cocos2dev.com/?p=149

假设java这边我需要调用C++那边的函数void PaySuccess(int type);

1、在java这边申明

1
private
static

native
void
nativePaySuccess(
int
i);
调用时,

1
nativePaySuccess(1);
这样java会调用到C++那边。

2、C++那边实现该方法:

查看源代码

打印帮助

01
#include
<jni.h>
02
03
extern
"C"
04
05
{
06
07
void
Java_com_cocos2dev_test_JNIDemo_nativePaySuccess(JNIEnv*
env, jobject thiz,jint a)
08
09
{
10
11
//这里java调用nativePaySuccess(1);,这里就会被调用。jint
a = 1
12
13
}
14
15
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: