プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

AdMobを組み込む方法

AdMob SDKをダウンロード後、組み込み方がよく分からなくて意外とはまったのでまとめ。


基本的には下記のドキュメントの通りですが、広告がない場合は表示されなかったり、端末によって表示されなかったりしました。AdMob側の設定で、リフレッシュレートを短め、Google AdSenseを有効にして掲載率を高めて実装した方がよいかなと思います。


Google AdMob Ads Android Fundamentals
Google AdMob Ads Android Intermediate

GoogleAdMobAdsSdk-4.1.1.jarをBuild Pathに追加

プロジェクトを右クリック > Properties > Java Build Path > Libraries

AndroidManifest.xmlにActivityとPermissionを追加
<manifest ...>
  <application android:icon="@drawable/icon" android:label="@string/app_name">
    ...
    <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差し込み用のレイアウトを追加
<LinearLayout
  android:id="@+id/ad"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" />
onCreateメソッドに生成コードを追加
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  ...
  
  AdView adView = new AdView(this, AdSize.BANNER, "パブリッシャーID"); 
  adView.setAdListener(this);
  adView.loadAd(new AdRequest());
  LinearLayout layout = (LinearLayout)findViewById(R.id.ad);
  layout.addView(adView);
}
AdListenerを実装
public class Main extends Activity implements AdListener{
  ...
  
  @Override
  public void onReceiveAd(Ad ad) {
    Log.d(TAG, "recive ad");
  }

  @Override
  public void onFailedToReceiveAd(Ad ad, ErrorCode errorCode) {
    Log.d(TAG, "failed to receive ad (" + errorCode + ")");
    if(ad.isReady()){
      ad.loadAd(new AdRequest());
    }
  }

  @Override
  public void onDismissScreen(Ad ad) {
  }

  @Override
  public void onLeaveApplication(Ad ad) {
  }

  @Override
  public void onPresentScreen(Ad ad) {
  }
}


こんな感じで表示できました。