[原]Unity Android平台調用Admob


關於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");
        }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM