在Cocos2dx项目中嵌入百度广告Android SDK

前端之家收集整理的这篇文章主要介绍了在Cocos2dx项目中嵌入百度广告Android SDK前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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
  1. publicclassShowAdHelper{@H_502_100@
  2. privatestaticHandlermHandler;@H_502_100@
  3. @H_502_100@
  4. staticvoidinit(Handlerhandler)@H_502_100@
  5. {@H_502_100@
  6. ShowAdHelper.mHandler=handler;@H_502_100@
  7. }@H_502_100@
  8. @H_502_100@
  9. voidshowMyAd()@H_502_100@
  10. {@H_502_100@
  11. Messagemsg=mHandler.obtainMessage();@H_502_100@
  12. msg.what=myGame.SHOW_AD;@H_502_100@
  13. msg.sendToTarget();@H_502_100@
  14. }@H_502_100@
  15. }@H_502_100@
同时,我们会在这个包下面发现一个文件,这个文件自动创建的,比如我的myGame.java,这个名称是和你在创建游戏时的命名有关的。在这个文件下面,要做如下修改

首先,声明一个变量和一个常量:

    classmyGameextendsCocos2dxActivity{@H_502_100@
  1. ...@H_502_100@
    finalintSHOW_AD=0x0001;@H_502_100@
  1. InterstitialAdinterAd;//插屏广告@H_502_100@
  2. ...@H_502_100@
  3. }@H_502_100@
然后还要在写一个初始化插屏广告函数

    publicInterstitialAdgetAd()@H_502_100@
  1. finalInterstitialAdinterAd1=newInterstitialAd(this);@H_502_100@
  2. interAd1.setListener(newInterstitialAdListener(){@H_502_100@
  3. @Override@H_502_100@
  4. voidonAdClick(InterstitialAdarg0){@H_502_100@
  5. Log.i(@H_112_301@"InterstitialAd",@H_112_301@"onAdClick");@H_502_100@
  6. @Override@H_502_100@
  7. voidonAdDismissed(){@H_502_100@
  8. Log.i(@H_112_301@"InterstitialAd",@H_112_301@"onAdDismissed");@H_502_100@
  9. interAd=getAd();@H_502_100@
  10. voidonAdFailed(Stringarg0){@H_502_100@
  11. 301@"onAdFailed");@H_502_100@
  12. voidonAdPresent(){@H_502_100@
  13. 301@"onAdPresent");@H_502_100@
  14. voidonAdReady(){@H_502_100@
  15. 301@"onAdReady");@H_502_100@
  16. });@H_502_100@
  17. interAd1.loadAd();@H_502_100@
  18. returninterAd1;@H_502_100@
  19. }@H_502_100@

同时,我们在onCreate函数调用一次:

    protectedvoidonCreate(BundlesavedInstanceState){@H_502_100@
  1. ...@H_502_100@
  2. interAd=getAd();@H_502_100@
  3. 创建一个Hendler
      privateHandleraHandler=newHandler()@H_502_100@
    1. voidhandleMessage(Messagemsg){@H_502_100@
    2. switch(msg.what)@H_502_100@
    3. caseSHOW_AD:@H_502_100@
    4. //if(isFirst)@H_502_100@
    5. //{@H_502_100@
    6. if(interAd.isAdReady()){@H_502_100@
    7. interAd.showAd(Cocos2dxActivity. Log.d(@H_112_301@"LC",@H_112_301@"show");@H_502_100@
    8. }else{@H_502_100@
    9. interAd.loadAd();@H_502_100@
    10. 301@"notshow");@H_502_100@
    11. break;@H_502_100@
    12. };@H_502_100@

    然后调用ShowAdHelper类中的init函数初始化。

      super.onCreate(savedInstanceState);@H_502_100@
    1. //mHandler=newMainHandler();@H_502_100@
    2. ShowAdHelper.init(mHandler);@H_502_100@
    3. 到这里就已经差不多了,我们只需要在C++层中通过jni调用ShowAdHelper类中的showMyAd函数就行了。

      当然也附上代码

      [cpp]
        voidPublicMethod::loadAndroidAd()@H_502_100@
      1. #if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)//判断当前是否为Android平台@H_502_100@
      2. JniMethodInfominfo;@H_502_100@
      3. jobjectjobj;@H_502_100@
      4. boolb=JniHelper::getStaticMethodInfo(minfo,@H_502_100@
      5. @H_112_301@"org/cocos2dx/lib/AdHelper",@H_502_100@
      6. @H_112_301@"showMyAd",108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> @H_112_301@"()V");@H_502_100@
      7. jobj=minfo.env->CallStaticObjectMethod(minfo.classID,minfo.methodID);@H_502_100@
      8. #endif@H_502_100@
      9. }@H_502_100@

      到此就完成了,你可以在想要出广告的地方调用 loadAndroidAd函数就行了。

      至此,小伙伴们就可以想在哪里展示广告就在哪里展示就行了。

      以上就是楼主这几天的心血,当然,我也有一些地方没搞明白,比如,为什么我按照官方demo添加的广告,只在第一次调用显示,以后调用后,它居然不显示了,但是居然还点的到这个广告,但是有些情况它会显示,比如,当我点击广告后,进入广告,然后退出在进入程序,它显示了,还有,当我按了menu键后在进入程序它也显示了,当然如果有哪位大神知道原因,麻烦告知。

      猜你在找的Cocos2d-x相关文章