http://blog.csdn.net/houshunwei/article/details/22176043
1.嵌入横幅广告:
在继承Cocos2dxActivity的那个类里:
protected voID onCreate(Bundle savedInstanceState){
.......
setupAds();
}
private voID setupAds()
{
relativeLayout layout = new relativeLayout(this);
addContentVIEw(layout,new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
adVIEw = new AdVIEw(activity);
relativeLayout.LayoutParams layoutParams=new relativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
layoutParams.addRule(relativeLayout.AliGN_PARENT_BottOM);
layout.addVIEw(adVIEw,layoutParams );
}
2.嵌入插屏广告:
热心开发者样例:http://blog.csdn.net/abc519469030/article/details/18562711
注:该开发者样例适用的场景为游戏暂停场景,翻页场景等。 如果想在程序启动后即出现插屏广告,则需要在InterstitialAdListener监听接口的onAdReady函数中来调用showAd,因为程序启动时间比较短,插屏广告载入需要一段时间,即调用loadAd后,需要一段时间广告才会准备好,广告准备好后会调用onAdReady这个回调函数。
这几天,楼主和我的几个小伙伴完成了一个自己的AndroID游戏,使用cocos2d-x-.2.1.5 编写的,现在基本上都完工了,但是当进行到发布应用这一步时,本来打算在游戏中添加道具收费的,但是遇到了一些问题,所以只能在里面添加插屏广告了,我们这款游戏添加的是百度移动联盟的,好了,废话少说,现在开始正式的:
首先大家都知道是配置问题,这一块我就不多说了,大家可以到http://munion.baidu.com/about.html#/sdk/mobSdk这个网址去下载,里面有开发者文档,
现在我主要说的是在eclipse里如何添加代码,好了,下面正式开始:
一、当我们在创建AndroID工程时,大家都自动创建了自己的packagename:比如我的是:
这个包名当我们通过C++层调用Java层代码时是用的到的。
首先,我们需要在这个包下面创建一个class文件,命名为showAdHelper.java
这个文件的内容是:
[java] view plain copy publicclassShowAdHelper{ privatestaticHandlermHandler; staticvoIDinit(Handlerhandler) { ShowAdHelper.mHandler=handler; } voIDshowMyAd() { Messagemsg=mHandler.obtainMessage(); msg.what=myGame.SHOW_AD; msg.sendToTarget(); } } 同时,我们会在这个包下面发现一个文件,这个文件是自动创建的,比如我的myGame.java,这个名称是和你在创建游戏时的命名有关的。在这个文件下面,要做如下修改:
首先,声明一个变量和一个常量:
classmyGameextendsCocos2dxActivity{ ... finalintSHOW_AD=0x0001; InterstitialAdinterad;//插屏广告 ... } 然后还要在写一个初始化插屏广告函数:
publicInterstitialAdgetAd() finalInterstitialAdinterad1=newInterstitialAd(this); interad1.setListener(newInterstitialAdListener(){ @OverrIDe voIDonAdClick(InterstitialAdarg0){ Log.i(@H_267_301@"InterstitialAd",@H_267_301@"onAdClick"); @OverrIDe voIDonAddismissed(){ Log.i(@H_267_301@"InterstitialAd",@H_267_301@"onAddismissed"); interad=getAd(); voIDonAdFailed(Stringarg0){ @H_267_301@"onAdFailed"); voIDonAdPresent(){ @H_267_301@"onAdPresent"); voIDonAdReady(){ @H_267_301@"onAdReady"); }); interad1.loadAd(); returninterad1; }
同时,我们在onCreate函数中调用一次:
protectedvoIDonCreate(BundlesavedInstanceState){ ... interad=getAd(); 创建一个Hendler privateHandleraHandler=newHandler() voIDhandleMessage(Messagemsg){ switch(msg.what) caseSHOW_AD: //if(isFirst) //{ if(interad.isAdReady()){ interad.showAd(Cocos2dxActivity. Log.d(@H_267_301@"LC",@H_267_301@"show"); }else{ interad.loadAd(); @H_267_301@"notshow"); break; };然后调用ShowAdHelper类中的init函数初始化。
super.onCreate(savedInstanceState); //mHandler=newMainHandler(); ShowAdHelper.init(mHandler); 到这里就已经差不多了,我们只需要在C++层中通过jni调用ShowAdHelper类中的showMyAd函数就行了。
当然也附上代码:
[cpp] voIDPublicmethod::loadAndroIDAd() #if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)//判断当前是否为AndroID平台 JniMethodInfominfo; jobjectjobj; boolb=JniHelper::getStaticmethodInfo(minfo, @H_267_301@"org/cocos2dx/lib/AdHelper", @H_267_301@"showMyAd",108); List-style:decimal-leading-zero outsIDe; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> @H_267_301@"()V"); jobj=minfo.env->CallStaticObjectMethod(minfo.classID,minfo.methodID); #endif }
到此就完成了,你可以在想要出广告的地方调用 loadAndroIDAd函数就行了。
至此,小伙伴们就可以想在哪里展示广告就在哪里展示就行了。
以上就是楼主这几天的心血,当然,我也有一些地方没搞明白,比如,为什么我按照官方demo添加的广告,只在第一次调用时显示,以后调用后,它居然不显示了,但是居然还点的到这个广告,但是有些情况它会显示,比如,当我点击广告后,进入广告,然后退出在进入程序,它显示了,还有,当我按了menu键后在进入程序它也显示了,当然如果有哪位大神知道原因,麻烦告知。
总结以上是内存溢出为你收集整理的在Cocos2dx项目中嵌入百度广告Android SDK全部内容,希望文章能够帮你解决在Cocos2dx项目中嵌入百度广告Android SDK所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)