AdMob[1]の配信する広告をアプリケーションに表示させるために, Google AdMob Ads SDK for Androidを試してみた.
2011年4月1日発行の「Google Android Web API プログラミング入門」[2]のChapter 10 広告配信ライブラリを参考にトライしたが, 2011年5月頃にAdMob SDKがGoogle AdMob Ads SDKとなり, 広告の表示方法も少し変わったようなのでまとめておく.

1. 準備[2]
1.1 AdMob ユーザ登録
 
ここからユーザ登録する. ユーザ登録はサイトの右上に登録リンクがあるので, そこから登録を行う.
AdMob01
1.2 アプリケーションの登録とAdMob SDKのダウンロード
 1) AdMobにログインする.
 2) "サイト及びアプリケーション"のメニューから"サイト/アプリケーションの追加"を選択する.
 3) Androidアプリケーションを選択する.
 4) アプリケーション名, パッケージURL, ジャンル, アプリケーションの説明等を入力する.
   まだアプリをAndroid Market等に登録していない場合, パッケージURLは"http://"でもOK.
AdMob03
 5) 登録が完了すると, "AdMob Android SDKのダウンロード"をクリックして, AdMob SDKをダウンロードする.
   7/17時点のダウンロードファイル:googleadmobadssdkandroid.zip
AdMob04
 6) AdMob SDKを解凍する.
   解凍したAdMob SDK:GoogleAdMobAdsSdkAndroid-4.1.0
1.3 パブリッシャーIDの確認
 1) "サイト及びアプリケーション"に移動する.
 2) 登録したアプリにカーソルを移動し, "設定を管理"を選択する.
AdMob02
 3) パブリッシャーIDを控えておく. このIDがアプリの識別IDとなる.
1.4 広告フィルタの設定
表示する広告を制御するために, 各種フィルタを設定する.
 1) 言語設定で, 表示する広告の言語を設定する. 例では, 日本語のみに設定.
AdMob6
 2) カテゴリ及びタイプ設定で, 表示する広告のタイプを設定する.
 3) URLフィルタ, テキストフィルタも必要があれば設定する.

2. AdMob広告の表示[2][3]
2.1 プロジェクトの作成
 1) AdmobSampleのプロジェクトを作成する.
2.2 AdMob SDKの組み込み
 1) AdmobSample以下にlibsディレクトリを作成する.
 2) libsディレクトリに, ダウンロードしたAdMob SDKの中にある, GoogleAdMobAdsSdk-4.1.0.jarをコピーする.
 3) GoogleAdMobAedsSdk-4.1.0.jar上で右クリック→Build Path→Add to Build Pathを選択し, ライブラリパスを設定する.
AdMob5
2.3 広告バナー表示プログラム
 1) layout/main.xml
   レイアウトファイルは, LinearLayoutにidを付与する.
   <?xml version="1.0" encoding="utf-8"?>
   <LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android"
     android:id="@+id/ad_id"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
   </LinearLayout>

 2) AdmobSample.java
   広告バナーを表示するコード(赤字)を追加する. 
   MY_AD_UNIT_IDには, 1.3で確認したパブリッシャーIDを設定する.
   package com.moonlight_aska.android.admobsample;
   import android.app.Activity;
   import android.os.Bundle;
   import android.util.Log;
   import android.widget.LinearLayout;

   import com.google.ads.*;
   import com.google.ads.AdRequest.ErrorCode;

   public class AdmobSample extends Activity {
     private static final String MY_AD_UNIT_ID = "xxxxxxxxxxxx";
 
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
        
       // AdMob設定
       AdView adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);
       LinearLayout layout = (LinearLayout)findViewById(R.id.ad_id);
       layout.addView(adView);
       // リスナー登録
       adView.setAdListener(new AdListener() {
         @Override
         public void onDismissScreen(Ad arg0) {
           // TODO Auto-generated method stub
         }
         @Override
         public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
           // TODO Auto-generated method stub
           Log.v("AdMob", "失敗");
         }
         @Override
         public void onLeaveApplication(Ad arg0) {
           // TODO Auto-generated method stub
         }
         @Override
         public void onPresentScreen(Ad arg0) {
           // TODO Auto-generated method stub 
         }
         @Override
         public void onReceiveAd(Ad arg0) {
           // TODO Auto-generated method stub
           Log.v("AdMob", "成功");
         }
       });
       // 広告表示
       AdRequest request = new AdRequest();
       request.setTesting(true);
    // <-- アプリ公開時には削除
       adView.loadAd(request);
     }
   }
 3) AndroidManifest.xml
   ネットワークアクセスを許可するために, "INTERNET"と"ACCESS_NETWORK_STATE"のパーミションを設定する.
   コンフィグレーション(キーボードや画面の向き等)が変更された場合に, Activityが一旦終了して再スタートしないように設定する.
   <?xml version="1.0" encoding="utf-8"?>
   <manifest xmlns:android="
http://schemas.android.com/apk/res/android"
     package="com.moonlight_aska.android.admobsample"
     android:versionCode="1"
     android:versionName="1.0">
     <uses-sdk android:minSdkVersion="8" />
     <uses-permission android:name="android.permission.INTERNET"></uses-permission>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
     <application android:icon="@drawable/icon" android:label="@string/app_name">
       <activity android:name=".AdmobSample"
         android:label="@string/app_name">
         <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">
       </activity> 
     </application>
   </manifest> 
 
2.4 アプリケーションの実行
SH-03C(SHARP, Android 2.2)で動作確認してみた.
AdMob7
広告が表示される場合と, 広告のリクエストには成功するが, 広告の表示に失敗する場合があった.

----
参照URL:
 [1] モバイル広告ネットワークプラットフォーム| AdMob

 [2]
Google Android Web API プログラミング入門(秀和システム)
 [3] Google AdMob Ads Android Fundamentals - Google AdMob Ads SDK