¿Cómo especificar adUnitId mediante programación para AdMob?

Estoy intentando establecer adUnitId mediante programación con los anuncios de los nuevos servicios de Google Play (antigua AdMob).

Tengo esto en XML (utilizado en un <include> ):

 <com.google.android.gms.ads.AdView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="match_parent" android:layout_height="wrap_content" ads:adSize="BANNER"/> 

Y esto en onCreate ():

 AdView mAdview = (AdView)findViewById(R.id.adView); mAdview.setAdUnitId(((App)getApplication()).getAdmobKey()); mAdview.setAdListener(new AdListener() { @Override public void onAdLoaded() { super.onAdLoaded(); findViewById(R.id.adView).setVisibility(View.VISIBLE); } }); AdRequest adRequest = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) .build(); mAdview.loadAd(adRequest); 

Y obtengo:

El tamaño del anuncio y el ID de la unidad de anuncio deben configurarse antes de que se llame loadAd.

Así que la segunda opción era hacer el anuncio programáticamente.

El nuevo XML:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/adView" /> 

El nuevo código:

 AdView mAdview = new AdView(this); ... ((LinearLayout)findViewById(R.id.adView)).addView(mAdview); mAdview.loadAd(adRequest); 

Pero tengo el mismo error.

También intenté heredar de com.google.android.gms.ads.AdView para crear una vista personalizada, pero es definitiva.

¿Cualquier sugerencia?

El método loadAd() comprueba si (mAdView.getAdSize() == null || mAdView.getAdUnitId() == null) cuando loadAd sucede.

Intente registrar la salida booleana de (mAdView.getAdSize() == null || mAdView.getAdUnitId() == null) antes de llamar a loadAd para determinar su estado:

  mAdView = new AdView(this); mAdView.setAdSize(AdSize.BANNER); mAdView.setAdUnitId(AD_UNIT_ID); AdRequest adRequest = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) .build(); if(mAdView.getAdSize() != null || mAdView.getAdUnitId() != null) mAdView.loadAd(adRequest); // else Log state of adsize/adunit ((LinearLayout)findViewById(R.id.adView)).addView(mAdview); 
  • la animación adview admob hace que glsurfaceview se retrasa
  • Cómo ocultar / deshabilitar adview admob?
  • Problemas con la carga de anuncios de AdMob en la aplicación
  • WebViewCoreThread utilizado por admob AdView utiliza CPU alta incluso cuando la actividad principal está en pausa
  • ¿Utilizar un AdRequest de AdMob para múltiples AdViews?
  • El tamaño del anuncio y el ID de la unidad de anuncio deben configurarse antes de loadAd cuando se establezca mediante programación
  • ¿Cuál es el tamaño, en píxeles, de AdSize.BANNER?
  • Parece que no se puede visualizar un ListView y un AdView al mismo tiempo
  • Impedir que AdView se recupere para cada actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.