主要目的是备忘,如果有幸能帮上其他朋友,那最好了
我的游戏使用的是cocos2dx 2.2.5,当然,使用2.1.x ~ 2.2.5版本都是可以的,没有什么变动。
一、Java调用C++
1、在JAVA项目中,声明一个带“native”的静态函数,比如 (假设包名是 com.ooxx.mygame
class MyActivity{
…
public static native int onIAPCallback(int select);
…
}
在JAVA项目中,你就当这个函数是一个普通的静态函数来调用就可以了。
2、打开jni下面的main.cpp,照着里面的那些函数的样子,写上
jint Java_com_ooxx_mygame_MyActivity_onIAPCallback(JNIEnv* env, jobject thiz,jint select)
{
//调用你的C++代码
}
二、C++调用JAVA
1、在JAVA项目中,声明一个普通的静态函数,比如 (假设包名是 com.ooxx.mygame
class MyActivity{
…
public static void onBuySomething(int itemID){
//做你想做的事
}
…
}
2、在C++项目中,调用这个函数
//包含JniHelper.h
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "platform/android/jni/JniHelper.h"
#endif
//调用JAVA中的静态函数
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, "com/ooxx/mygame/MyActivity", "onBuySomething", "(I)V"))
{
t.env->CallStaticVoidMethod(t.classID, t.methodID,itemID);
t.env->DeleteLocalRef(t.classID);
}
#endif //
这里附上AndroidJNI说明 请走这里 足以解答你的疑惑
三、点击某个按钮,打开玩家机器上的邮件,可以拿来做好友邀请,游戏反馈等
public static void sendEmail(String sendTo,String subject,String body){
Intent email = new Intent(android.content.Intent.ACTION_SEND);
email.setType("plain/text");
String[] emailReciever = new String[]{sendTo};
email.putExtra(android.content.Intent.EXTRA_EMAIL, emailReciever);
email.putExtra(android.content.Intent.EXTRA_SUBJECT,subject);
email.putExtra(android.content.Intent.EXTRA_TEXT, body);
GameActivity.Self.startActivity(Intent.createChooser(email, "Choose Email Client"));
}
四、打开Amazon商店
public static void onOpenInMarketClient(String id){
Intent intent = new Intent(Intent.ACTION_DEFAULT);
Uri content_url = Uri.parse("amzn://apps/android?asin="+id);
intent.setData(content_url);
GameActivity.Self.startActivity(intent);
}
注意:大部分ANDROID市场是使用 market://apps/android?id= 来做前缀。但Amazon很蛋疼。 上面的代码可以正确打开玩家手机上的Amazon商店
至于asin码如何而来,请走这里
五、Amazon IAP支付
直接下载Amazon IAP来改就可以了,不需要做太多工作
六、Chartboost
比Amazon还简单,下载SDK,有一个Sample,把代码弄进来,改改ID和函数调用就可以咯。
收工~~