Google AdMob for Android
這幾天小蛙搞Android Ads花了不少時間,這篇文章紀錄一下Google AdMob如何在Android App中加入廣告。之後會把AdWhirl + Vpon, KuAD, AdMob … 操作的流程也陸續記錄下來。
這篇文章只分享單純在加入Google AdMob,後續再紀錄導入AdWhirl過程。
- 第一步先註冊 AdMob 帳號,網站是正體中文,申請的部分小蛙就略過了。
- 登入之後點選「網站與應用程式」頁籤中的「新增網站/應用程式」,接著新增Android應用程式。
- 輸入應用程式名稱、URL、類別及應用程式說明。
- 完成後會跳到網站程式碼下載頁面,直接點選「下載 AdMob Android SDK」,下方有官方文件連結(http://code.google.com/mobile/ads/docs/android/),其實裡面已經寫得很詳細了。
- 回到主頁面後可以看到剛剛新增的「我的股票精算師」已經出現在網站/應用程式列表中,點選「管理設定」。
- 紅色框框部分最好選擇上方的測試模式設定,如果不想莫名其妙被Google停權的話…
- 回到Eclipse Android專案部分,在專案上點選滑鼠右鍵 -> Properties -> Java Build Path -> Libraries -> Add External JARs -> 選取步驟4下載的GoogleAdMobAdsSdk-4.3.1.jar -> OK。
- 在AndroidManifest.xml中新增一個com.google.ads.AdActivity。(放在<application>放在這</application>中間>)
<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
- 在AndroidManifest.xml中新增兩個users-permission
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
-
加入程式碼。(下方是官方的範例)
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(); } }
- 這裡有一個部份要注意,就是在專案上點選滑鼠右鍵 -> Properties -> Android -> Project Build Target 要選 Android 3.2,不然一直會提示AndroidManifest.xml錯誤(參考自Admob的另一個選擇︰Vpon @ 小鰻的Android學習筆記。
有什麼問題都可以留言一起討論,如果小蛙幫得上忙的話,最近被這些廣告搞到快昏頭了,之後再把 adwhirl, vpon, kuad, admob … 等整合的方法記錄下來。
請問版主, 要如何由程式取得adView的高度? 謝謝
Dear mm:
adView 的高度可以透過 adView.getHeight() 取得,如果取到的結果是 0 的話,
表示 adView 裡面的內容還沒有完全載入,所以是 0,
可以從 implements AdListener 介面裡的 onReceiveAd(Ad ad) 測試,
第一次的時候是 0,第二次取得廣告的時候就可以得到真正的高度了,
應該可以從這邊著手,延後取得高度的時間,
onReceived 方法看起來只是開始載入廣告的時候呼叫的,
此時廣告還沒有完全在 AdView 中呈現,
提供您參考囉!
謝謝版主,我再去試看看!!
板主你好:
我是一個剛進入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”)等等,不知是何原因,不知版主是否方便能為我解惑,麻煩你了,謝謝!!
Dear mar:
Could not find class 看起來應該是 import vpon jar 的時候有問題,
http://wazai.net/2199/android-sdk-r17-noclassdeffounderror
如果使用新版的 sdk,可以參考上面的網址,
小蛙在更新完之後發現原本可以RUN的程式都不會動了,
可以試試看是不是這個問題!祝您好運囉!
^____^
請問一下喔@@~我一步一步照著做,也有參考很多跟您類似的方法或是google api文件~但最後在模擬機上發布測試時,總是彈出”應用程式未預期結束的視窗”…這,我哪裡做錯了嗎@@….
而且這種情形只有在我加入admob的時候才有,拿掉admob,應用程式又可以在模擬器上正確運作….不曉得您能幫我解惑一下嗎…感激阿
Dear zemaitis:
光是從這樣文字敘述小蛙也很難幫得上忙>< 可能要麻煩您附上DDMS中的Logcat錯誤訊息, 正常來說如果發生錯誤的話,Logcat應該會顯示錯誤訊息才對。 如果有詳細Admob程式碼部分及xml部分就更好了! (可以直接貼這邊或是mail給小蛙) 初步聽起來eclipse可以給過,卻又發生錯誤的情況, 很有可能是NullPointerException吧! (純粹猜測,要看到錯誤訊息或原始碼才能做判斷)