まずはマニュフェストを編集して広告表示用のアクティビティとパーミッションの設定を行う必要があります。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hozuki.grap200"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="AdMobMainActiv"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- AdMobのアクティビティ -->
<activity android:name="com.google.ads.AdActivity" android:configChanges="orientation|keyboard|keyboardHidden" />
</application>
<!-- AdMob SDK permissions -->
<!-- 広告の取得に必要 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 地域にあった広告の取得に必要 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
上記のコードの
<activity android:name="com.google.ads.AdActivity" android:configChanges="orientation|keyboard|keyboardHidden" />
と
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
をAndroidManifest.xmlに追記します。
次に広告を実装したいActivity内に以下のコードを記載します。
public class AdMobMainActiv extends Activity {
//////////////////////////////////////////////////////////////////
// フィールド
//////////////////////////////////////////////////////////////////
/** 開発者ID */
private final String AD_UNIT_ID = "TODO:ここにアプリケーションごとに割り振られたIDを記載してください";
/** AdMobの広告 */
private AdView adView;
/** 広告表示用レイアウト */
private LinearLayout adPosition;
//////////////////////////////////////////////////////////////////
// イベントリスナー
//////////////////////////////////////////////////////////////////
/** 広告の状態によって処理を行う */
private AdListener AdEventListener = new AdListener() {
/** 広告が表示されたら呼ばれる */
@Override public void onReceiveAd(Ad ad) {
Log.d("onReceiveAd");
}
/** 広告がクリックされたら呼ばれる */
@Override public void onPresentScreen(Ad ad) {
Log.d("onPresentScreen");
}
/** 表示された広告から別のアクティビティが開かれた時に呼ばれる・・・らしい */
@Override public void onLeaveApplication(Ad ad) {
Log.d("onLeaveApplication");
}
/** 広告が表示出来なかったら呼ばれる */
@Override public void onFailedToReceiveAd(Ad ad, ErrorCode errorcode) {
Log.d("onFailedToReceiveAd");
}
/** 広告表示から戻ったときに呼ばれる */
@Override public void onDismissScreen(Ad ad) {
Log.d("onDismissScreen");
}
};
//////////////////////////////////////////////////////////////////
// メソッド
//////////////////////////////////////////////////////////////////
/** AdMobの広告の初期化を行う */
private void InitAdMob(){
//AdMobの広告表示用ビュー領域作成
adView = new AdView(this, AdSize.BANNER, AD_UNIT_ID);
AdRequest adRequest = new AdRequest();
adRequest.setTesting(true); //TODO:公開する時にはこの行を削除すること
adView.loadAd(adRequest);
//AdMobの広告表示位置を設定
adView.setGravity(Gravity.BOTTOM);
adView.setLayoutParams(new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT));
//AdMobの広告の状態を取得するイベントリスナーを登録
adView.setAdListener(AdEventListener);
//広告表示用レイアウト作成し、AdMobの広告セット
adPosition = new LinearLayout(this);
adPosition.setGravity(Gravity.BOTTOM);
adPosition.addView(adView);
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//広告表示レイアウトを画面にセット
setContentView(adPosition, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
//既にセットされているビューに追加する場合は以下
//addContentView(adPosition, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//End of Files
/////////////////////////////////////////////////////////////////////////////////////////////////
広告を画面の上部に表示したい場合は
adView.setGravity(Gravity.BOTTOM);
adPosition.setGravity(Gravity.BOTTOM);
の2行を削除すればOKです。
また、テストなどが終わり、公開する際は
adRequest.setTesting(true);
の行を削除しましょう。
削除し忘れるとテスト用の広告しか配信されません。