轉載請註明出處: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(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubswitch (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");}@Overridepublic void onVideoClickAd() {Log.w("", "onVideoFinish");}@Overridepublic void onVideoClickClose() {Log.w("", "onVideoFinish");}@Overridepublic void onVideoClickReplay() {Log.w("", "onVideoFinish");}@Overridepublic 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按鈕顯示廣告