Google AdMob for Android

這幾天小蛙搞Android Ads花了不少時間,這篇文章紀錄一下Google AdMob如何在Android App中加入廣告。之後會把AdWhirl + Vpon, KuAD, AdMob … 操作的流程也陸續記錄下來。

這篇文章只分享單純在加入Google AdMob,後續再紀錄導入AdWhirl過程。

  1. 第一步先註冊 AdMob 帳號,網站是正體中文,申請的部分小蛙就略過了。
  2. 登入之後點選「網站與應用程式」頁籤中的「新增網站/應用程式」,接著新增Android應用程式。
    admob 1 Google AdMob for Android
  3. 輸入應用程式名稱、URL、類別及應用程式說明。
    admob 2 Google AdMob for Android
  4. 完成後會跳到網站程式碼下載頁面,直接點選「下載 AdMob Android SDK」,下方有官方文件連結(http://code.google.com/mobile/ads/docs/android/),其實裡面已經寫得很詳細了。
    admob 3 Google AdMob for Android
  5. 回到主頁面後可以看到剛剛新增的「我的股票精算師」已經出現在網站/應用程式列表中,點選「管理設定」。
    admob 4 Google AdMob for Android
  6. 紅色框框部分最好選擇上方的測試模式設定,如果不想莫名其妙被Google停權的話…
    admob 5 Google AdMob for Android
  7. 回到Eclipse Android專案部分,在專案上點選滑鼠右鍵 -> Properties -> Java Build Path -> Libraries -> Add External JARs -> 選取步驟4下載的GoogleAdMobAdsSdk-4.3.1.jar -> OK。
  8. AndroidManifest.xml中新增一個com.google.ads.AdActivity。(放在<application>放在這</application>中間>)
    <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
  9. AndroidManifest.xml中新增兩個users-permission
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  10. 加入程式碼。(下方是官方的範例)

    public class BannerExample extends Activity {
      private AdView adView;
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 建立 adView
        adView = new AdView(this, AdSize.BANNER, "這裡改成步驟6看到的發佈商ID");
        // 這裡是指定廣告要出現的layout,把R.id.mainLayout換成自己的
        // 或者是把自己的指定成 android:id="@+id/mainLayout"
        LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
        // 把admob view加入
        layout.addView(adView);
        // 載入廣告
        adView.loadAd(new AdRequest());
      }
      @Override
      public void onDestroy() {
        adView.destroy();
        super.onDestroy();
      }
    }
  11. 這裡有一個部份要注意,就是在專案上點選滑鼠右鍵 -> Properties -> Android -> Project Build Target 要選 Android 3.2,不然一直會提示AndroidManifest.xml錯誤(參考自Admob的另一個選擇︰Vpon @ 小鰻的Android學習筆記

有什麼問題都可以留言一起討論,如果小蛙幫得上忙的話,最近被這些廣告搞到快昏頭了,之後再把 adwhirl, vpon, kuad, admob … 等整合的方法記錄下來。

    7 個回應

    1. mm表示:

      請問版主, 要如何由程式取得adView的高度? 謝謝

      • Hans表示:

        Dear mm:
        adView 的高度可以透過 adView.getHeight() 取得,如果取到的結果是 0 的話,
        表示 adView 裡面的內容還沒有完全載入,所以是 0,
        可以從 implements AdListener 介面裡的 onReceiveAd(Ad ad) 測試,
        第一次的時候是 0,第二次取得廣告的時候就可以得到真正的高度了,
        應該可以從這邊著手,延後取得高度的時間,
        onReceived 方法看起來只是開始載入廣告的時候呼叫的,
        此時廣告還沒有完全在 AdView 中呈現,
        提供您參考囉!

    2. mar表示:

      謝謝版主,我再去試看看!!

    3. mar表示:

      板主你好:
      我是一個剛進入android市場的新手,寫了一個簡單的程式已發佈到google play,目前想將vpon的廣告加進程式內卻出現一些問題,然後我將它的sample程式在模擬器上執行也無法執行(跳出一個對話框說此程式stop,須強制關閉)(Logcat上一堆紅,其中有””06-09 10:27:38.819: E/dalvikvm(577): Could not find class ‘com.vpon.adon.android.AdView’, referenced from method com.mar.unit_conversion.Area.findViews
      以及 “06-09 03:11:22.450: E/AndroidRuntime(357): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597”)等等,不知是何原因,不知版主是否方便能為我解惑,麻煩你了,謝謝!!

    4. zemaitis表示:

      請問一下喔@@~我一步一步照著做,也有參考很多跟您類似的方法或是google api文件~但最後在模擬機上發布測試時,總是彈出”應用程式未預期結束的視窗”…這,我哪裡做錯了嗎@@….
      而且這種情形只有在我加入admob的時候才有,拿掉admob,應用程式又可以在模擬器上正確運作….不曉得您能幫我解惑一下嗎…感激阿

      • Hans表示:

        Dear zemaitis:
        光是從這樣文字敘述小蛙也很難幫得上忙>< 可能要麻煩您附上DDMS中的Logcat錯誤訊息, 正常來說如果發生錯誤的話,Logcat應該會顯示錯誤訊息才對。 如果有詳細Admob程式碼部分及xml部分就更好了! (可以直接貼這邊或是mail給小蛙) 初步聽起來eclipse可以給過,卻又發生錯誤的情況, 很有可能是NullPointerException吧! (純粹猜測,要看到錯誤訊息或原始碼才能做判斷)

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料