電子ガジェットいろいろ

電子系のガジェットやアプリ開発等の話題を書いてます

androidアプリでAdMobの広告を使う方法

今回はadmobSampleというプロジェクトを作成して手順のメモを書きます。
対象androidのバージョンはいくつでもかまいませんが、とりあえず表示するだけなので、1.6とします。(現在のところadmobSDKの使用方法はバージョンの違いはありません。)

AdMob

http://jp.admob.com/
ここの管理画面から"サイト/アプリケーションの追加"でadmobSDKをダウンロードする。
(2011/9/5の時点のバージョンは4.1.1)

プロジェクトへadmobSDKを追加

とりあえずプロジェクトフォルダ内に"libs"フォルダを作り、その中に入れる。

プロジェクトのプロパティーでビルドパスの設定をする。

AndroidManifest.xmlの編集

"AndroidManifest.xml"へactivityとuses-permissionの追加をする。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="net.uosoft.android.admobSample"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="4" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".AdmobSampleActivity"
                  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"/>
        <!-- ここまで -->

    </application>

    <!-- ここから -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <!-- ここまで -->

</manifest>

レイアウトファイルの編集

admobのビューを追加したいコントロールandroid:idを"@+id/ad"に設定する。
今回はデフォルトの画面のレイアウト定義ファイル(res/layout/main.xml)へFrameLayoutを追加し、そこに表示させるようにする。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<!-- ここから -->
<FrameLayout
    android:id="@+id/ad" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    />
<!-- ここまで -->

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>

広告を表示するActivityを編集

今回はデフォルトの画面(AdmobSampleActivity)を編集する
解説省略(ソース中のコメントを参考にしてください)

package net.uosoft.android.admobSample;

import android.app.Activity;
import android.os.Bundle;

// 追加されたインポート
import android.widget.FrameLayout;
import com.google.ads.Ad;
import com.google.ads.AdListener;
import com.google.ads.AdRequest;
import com.google.ads.AdRequest.ErrorCode;
import com.google.ads.AdSize;
import com.google.ads.AdView;
// ここまで

// implements AdListenerを追加
public class AdmobSampleActivity extends Activity implements AdListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // 広告用リクエストオブジェクトの定義
        AdRequest adRequest=new AdRequest();
        // ここまで
        
        // テストのためのコード(リリース時は削除する)
        adRequest.addTestDevice("0123456789ABCDEF0123456789ABCDEF"); // テスト端末
        adRequest.addTestDevice(AdRequest.TEST_EMULATOR);            // Emulator
        adRequest.setTesting(true);
        // ここまで
        
        // 広告表示処理
        // <パブリッシャーID>はAdMobの管理画面から取得する
        AdView adView = new AdView(this, AdSize.BANNER, "<パブリッシャーID>"); 
        adView.setAdListener(this);
        adView.loadAd(adRequest);
        FrameLayout layout = (FrameLayout)findViewById(R.id.ad);
        layout.addView(adView);
        // ここまで
    }
    
    //
    // 以下、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
          // 広告が準備完了なら表示させる処理を追加
          if(arg0.isReady()){
              arg0.loadAd(new AdRequest());
            }
          // ここまで
    }

    @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

    }
}

実行

とりあえず、これで画面上に表示させることが出来ました。

Androidプログラミングバイブル―SDK3.0/2.3/2.2/2.1対応 (smart phone programming bible)

Androidプログラミングバイブル―SDK3.0/2.3/2.2/2.1対応 (smart phone programming bible)