Androidアプリ開発

【Android】AdMobのユニットIDをJavaから動的に指定する

xmlにAdMobのレイアウトを定義し、UnitIDを直接記述する方法が一般的だが、ここではJavaからコーディングでUnitIDを指定する方法。

 

以下のようなAdMobレイアウトをコーディングで実現する。

<!-- AdMob -->
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center|bottom" >

    <com.google.android.gms.ads.AdView
        android:id="@+id/ad_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/unit_id" />

</LinearLayout>

 

1.Javaからレイアウトを呼ぶためのIDをLinearLayoutに指定

以下の1行を追記する。

android:id="@+id/ad_view_linear"

 

2.AdViewをレイアウトから削除

Javaからレイアウトを追加するため、AdView部分を削除する

1と2を実行した結果、xmlは以下となる。

<!-- AdMob -->
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center|bottom"
    android:id="@+id/ad_view_linear">

</LinearLayout>

 

3.params、UnitID、サイズを指定しLinearLayoutを作成

public static final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;

/**
 * AdMob広告レイアウト作成処理(コードでUNIT IDを指定)
 * @param view
 * @param unitId
 */
public static void AdMobCreateLayout(View view, String unitId){
	LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.ad_view_linear);
	LinearLayout.LayoutParams params = new LinearLayout.LayoutParams (WC, WC);
	params.gravity = Gravity.CENTER_HORIZONTAL;
	params.gravity = Gravity.BOTTOM;
	AdView mAdView = new AdView(this);
	mAdView.setAdUnitId(unitId);
	mAdView.setAdSize(AdSize.BANNER);
	linearLayout.addView(mAdView, params);
	makeAdRequest(mAdView);
}


/**
 * AdMob広告を読み込む
 * @param mAdView
 */
public static void makeAdRequest(AdView mAdView) {
	AdRequest adRequest = new AdRequest.Builder()
				.build();
	mAdView.loadAd(adRequest);
}