Admobの広告の表示率が異常に悪いので、AdmobがダメなときはAdmakerの広告を出すためのプログラムを書いてみました。こういうのはみんな簡単に出来たらいいなぁと思っているに違いないので、公開しておきます。
まずはレイアウトファイル。広告エリア分のみ。
広告が表示されるまでは、ProgressBarの小さいやつを表示しておきます。AdMakerの広告はこの時点では表示させないため、visibilityをgoneにしています。
<RelativeLayout android:id="@+id/adArea" android:layout_width="fill_parent" android:layout_height="48dip"> <ProgressBar android:id="@+id/loading" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" style="?android:attr/progressBarStyleSmall" /> <com.admob.android.ads.AdView android:id="@+id/ad" android:visibility="visible" android:layout_width="fill_parent" android:layout_height="48dip" android:layout_centerInParent="true" app:backgroundColor="#000000" app:primaryTextColor="#FFFFFF" app:secondaryTextColor="#CCCCCC" app:keywords="Android applicaton" app:refreshInterval="30" /> <jp.co.nobot.libYieldMaker.libYieldMaker android:id="@+id/admakerview" android:layout_width="fill_parent" android:layout_height="48dip" android:layout_centerInParent="true" android:layout_weight="0" android:visibility="gone" /> </RelativeLayout>
次はJava側。Activityを継承したAdActivityというのをここでは書いてます。まぁこうしなくても良いですけどね。setAdViewをonCreateの最後に呼べばいいかなと思います。Admobの広告の取得に失敗したら、onFailedToReceiveAdが呼ばれますから、これをトリガーにして、AdMakerの広告を表示させています。
public abstract class AdActivity extends Activity {
private static final String TAG = "AdActivity";
private static final String ADMAKER_URL = "AdMakerさんから伝えられたURL";
// Admobの広告用View
protected AdView adView;
/**
* 広告を表示させる
*/
protected void setAdView() {
adView = (AdView) findViewById(R.id.ad);
adView.setAdListener(new AdListener() {
public void onReceiveRefreshedAd(AdView adView) {
Log.d(TAG, "AdListener.onReceiveRefreshedAd called!");
}
public void onReceiveAd(AdView adView) {
Log.d(TAG, "AdListener.onReceiveAd called!");
// 広告が表示できたのでProgressBarを消す
ProgressBar loading = (ProgressBar)findViewById(R.id.loading);
loading.setVisibility(ProgressBar.GONE);
}
public void onFailedToReceiveRefreshedAd(AdView adView) {
Log.d(TAG, "AdListener.onFailedToReceiveRefreshedAd called!");
}
public void onFailedToReceiveAd(AdView adView) {
Log.d(TAG, "AdListener.onFailedToReceiveAd called!");
// プログレスバーを消す
ProgressBar loading = (ProgressBar)findViewById(R.id.loading);
loading.setVisibility(ProgressBar.GONE);
// AdMakerの広告を表示するのでAdViewの更新を行わせない
adView.setRequestInterval(0);
adView.setVisibility(AdView.GONE);
// AdMakerの広告を表示させる
libYieldMaker mv = (libYieldMaker)findViewById(R.id.admakerview);
mv.setVisibility(libYieldMaker.VISIBLE);
mv.setUrl(ADMAKER_URL);
mv.startView();
}
});
}
}
参考になりましたら幸いですー。
