關於android的知識我就不在此說明,不熟悉的朋友可以先去了解一下基礎知識。
開發環境:android 4.0、admob sdk 6.1.0、unity3.5、操作系統 win7
開發前需要將 classes.jar admob sdk 6.1.0.jar 拖到android工程 libs下面 (注意:不要通過java bulid path 導入jar包,那樣老說找不到 admob的相關庫)
如下所示:
本實例沒有配置界面的XML,都是代碼創建控件
特別說明:unity中bundle Identifier 必須為包名(本例 com.example.testadmob)
先貼代碼
package com.example.testadmob; import com.google.ads.AdRequest; import com.google.ads.AdSize; import com.google.ads.AdView; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import com.unity3d.player.UnityPlayer; import com.unity3d.player.UnityPlayerActivity; public class MainActivity extends UnityPlayerActivity { private AdView adView; LinearLayout layout; AdRequest adRequest; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupAds(); //admob廣告的添加 } public void setupAds() { layout = new LinearLayout(this); //創建linearLayout layout.setOrientation(LinearLayout.VERTICAL); //設置成垂直 addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); //layout添加到住View adView = new AdView(this,AdSize.BANNER,"a150547a7a8cfc9"); layout.addView(adView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); adView.setBackgroundColor(0xff000000); adRequest=new AdRequest(); } public static void ShowAds() {//unity 中調用此函數 顯示廣告 final MainActivity currentActivity = (MainActivity)UnityPlayer.currentActivity; currentActivity.runOnUiThread(new Runnable() { public void run() { currentActivity.showAds(); } }); } public static void HideAds() { final MainActivity currentActivity = (MainActivity)UnityPlayer.currentActivity;//在unity中獲取當前主activity currentActivity.runOnUiThread(new Runnable() { public void run() { currentActivity.hideAds(); } }); } public void showAds() { adView.setVisibility(View.VISIBLE); adView.loadAd(adRequest);//請求廣告 Log.d("AdListener", "showAds"); } public void hideAds() { adView.setVisibility(View.GONE); Log.d("AdListener", "hideAds"); } }
AndroidManifest.xml 如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testadmob" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> </application> </manifest>
選擇工程 導出——》JAR file——》Next——》選擇路徑——》finish 導出jar包
在unity中新建plugins/Android 文件夾 將android工程下的libs、bin、res 、AndroidManifest.xml拷貝到 Android目錄下。 清空bin libs下的內容,將導出的jar包和andmobsdk分別拷貝到兩個文件夾下
如圖所示:
unity 中調用
private AndroidJavaClass cls_TheActivity; cls_TheActivity = new AndroidJavaClass("com.example.testadmob.MainActivity");//對應android的包名 if(GUI.Button(new Rect(100,300,100,40),"show")) { cls_TheActivity.CallStatic("ShowAds"); } if(GUI.Button(new Rect(200,300,100,40),"hide")) { cls_TheActivity.CallStatic("HideAds"); }