首先了解一下 jni的一些东西
http://www.himigame.com/android-game/725.html
里面的我也就不再复制粘贴了。
我这里使用的是mix智游汇的demo。
1 和Android项目一样
首先把mix的jar包放入libs中,添加连接和以前的步骤一样。
添加一个static方法,内部调用MIXView的showAd的方法,注意第一个参数。
public class TEST extends Cocos2dxActivity implements MIXViewListener{ //定义一个静态的上下文 public static Context context_; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //初始化mix插件 MIXView.initWithID("6f83f191b42739f9", true, this); //设置上下文 context_=TEST.this; //可选项:设置mix监听 MIXView.setListener(this); } static { System.loadLibrary("game"); } //这个是himi的demo 静态函数示例2.有参数,无返回值 public static void testFunWithInt(int _int) { Log.e("Himi", "静态函数示例1.有参数,无返回值;传入的参数int=" + _int); } //这个是mix调用展示广告的方法。 public static void showAAd(){ MIXView.showAd((Activity) context_, "default"); }
mix.showAd 第二个参数是广告触发位,可以自己设置。
在c++代码中
我自己又添加了一个button,添加了一个回掉函数menuCloseCallback1()
void HelloWorld::menuCloseCallback1() { CCLOG("%s","test..."); ////静态函数示例1.无参数,无返回值---------------------------------$$$$$$----------------------------- #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台 JniMethodInfo minfo;//定义Jni函数信息结构体 //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数 bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/aosting/TEST", //类的路径 "showAAd", "()V"); if (!isHave) { CCLog("jni:此函数不存在"); }else{ CCLog("jni:此函数存在"); //调用此函数 minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID); } CCLog("jni-java函数执行完毕"); #endif }
运行Android就可以了,其中我没有在ccoos2d-x中游戏状态做处理,比如在展示广告的时候,暂停一些资源,关闭的时候,重新开启。
mix可以自定义广告触发位,也就是mix.showAd 第二个参数。
开始的时候我一直想用在c++中传递string类型,发现很麻烦。可以在c++中传递int参数。
然后在java方法中添加一个switch语句来展示不同的位置广告。