转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/36716955
DEMO下载地址:http://download.csdn.net/detail/oyangyufu/7589981
上一篇写了cocos2d-x嵌入mogo横幅广告(点击此跳转),这篇写如何在cocos2d-x中嵌入百度横幅广告。
百度横幅广告测试:
1、将cocos2d-x项目导入到eclipse上
2、注册登入百度移动联盟(http://munion.baidu.com/)后,下载推广SDK android 版,下载完名称为:Baidu_MobAds_SDK.zip
3、解压后获取jar包,Baidu_MobAds_SDK.jar,放入libs目录下,单击右键->Build Path->Add to Build Path
4、在AndroidManifest.xml添加用户权限:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"></uses-permission>
5、添加APPSID与计费名及申明AppActivity
<!-- 声明百度的Activity --> <meta-data android:name="BaiduMobAd_APP_ID" android:value="debug" /> <meta-data android:name="BaiduMobAd_APP_SEC" android:value="debug" /> <activity android:name="com.baidu.mobads.AppActivity" android:configChanges="keyboard|keyboardHidden|orientation" /> <!--baidu广告 end -->
注此时测试APPSID和计费名的值为debug,调试成功后改为自己申请成功的APPSID和计费名,即可上传应用至联盟端审核,审核通过后便显示广告并计费。
6、在主Activity类中,添加横幅广告
package com.cocos2dx.org; import org.cocos2dx.lib.Cocos2dxActivity; import org.cocos2dx.lib.Cocos2dxGLSurfaceView; import org.json.JSONObject; import com.baidu.mobads.AdSettings; import com.baidu.mobads.AdView; import com.baidu.mobads.AdViewListener; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; public class Test extends Cocos2dxActivity{ public static SharedPreferences sharedPreferences; public static SharedPreferences.Editor editor; private static Handler handler; private static RelativeLayout bannerLayout; private AdView adView; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); bannerLayout = new RelativeLayout(this); RelativeLayout.LayoutParams parentLayputParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); this.addContentView(bannerLayout, parentLayputParams); adView = new AdView(this); handler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub switch (msg.what) { case 0: if (bannerLayout.getChildCount() == 0) { // 设置监听器 adView.setListener(new AdViewListener() { public void onAdSwitch() { Log.w("", "onAdSwitch"); } public void onAdShow(JSONObject info) { Log.w("", "onAdShow " + info.toString()); } public void onAdReady(AdView adView) { Log.w("", "onAdReady " + adView); } public void onAdFailed(String reason) { Log.w("", "onAdFailed " + reason); } public void onAdClick(JSONObject info) { Log.w("", "onAdClick " + info.toString()); } public void onVideoStart() { Log.w("", "onVideoStart"); } public void onVideoFinish() { Log.w("", "onVideoFinish"); } @Override public void onVideoClickAd() { Log.w("", "onVideoFinish"); } @Override public void onVideoClickClose() { Log.w("", "onVideoFinish"); } @Override public void onVideoClickReplay() { Log.w("", "onVideoFinish"); } @Override public void onVideoError() { Log.w("", "onVideoFinish"); } }); //显示广告 RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT , RelativeLayout.LayoutParams.WRAP_CONTENT); layoutParams.addRule( RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); bannerLayout.addView(adView, layoutParams); } break; } } }; } public Cocos2dxGLSurfaceView onCreateView() { Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this); // HelloWorld should create stencil buffer glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8); return glSurfaceView; } //静态函数cpp调用 public static void showBannerStatic() { Message msg = handler.obtainMessage(); msg.what = 0; handler.sendMessage(msg); } static { System.loadLibrary("cocos2dcpp"); } }
7、在CPP程序中通过JNI调用showBannerStatic()函数即可。
8、效果图如下,点击show banner按钮显示广告