Cargando varios videos de AdMob

Para fines de demostración, la aplicación tiene una actividad que simplemente ofrece lo siguiente: Introduzca aquí la descripción de la imagen

Haces clic en un botón, ver un video recompensado y te recompensa con lo que sea.

El problema

¿Cómo puedo cargar los videos? Por lo que he visto, solo puedes llamar mAd.loadAd() una vez. Hay 3 videos, cada uno con su propia identificación de la UNIDAD. Cada bloque de anuncios puede tener su propio oyente, pero sólo se carga un video, por lo que no importa …

Al intentar cargar varios vídeos

Por ejemplo:

 mAd1.loadAd("AD_UNIT_1", new AdRequest.Builder().build()); mAd2.loadAd("AD_UNIT_2", new AdRequest.Builder().build()); mAd3.loadAd("AD_UNIT_3", new AdRequest.Builder().build()); 

Sólo se obtiene el último video cargado y esto en el registro:

W/Ads: Loading already in progress, saving this object for future refreshes.

OnCreate ()

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAd1 = MobileAds.getRewardedVideoAdInstance(this); mAd2 = MobileAds.getRewardedVideoAdInstance(this); mAd3 = MobileAds.getRewardedVideoAdInstance(this); listeners... mAd1.loadAd() etc } 

Gracias por tu ayuda

Edit: Está claro que estoy pensando en este problema mal. Tengo 5 + zonas publicitarias que cada uno reproducirá un video recompensado y dará una recompensa diferente (por ejemplo, uno da monedas, uno da un nivel hacia arriba, y así sucesivamente ..). No hay ninguna razón para cargar 5 videos. Debo cargar uno en onCreate() , por lo que está listo cuando sea necesario, a continuación, cargarlo de nuevo después de que el artículo es recompensado por lo que está listo para la próxima vez.

Así que la pregunta sigue siendo, si sólo hay un video, y por lo tanto una zona de anuncios, cargando onCreate() entonces ¿cómo puedo seguir qué recompensa dar?

Aquí hay una solución sencilla …

MainActivity.java

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAd = MobileAds.getRewardedVideoAdInstance(this); mAd.setRewardedVideoAdListener(new RewardedVideoAdListener() { @Override public void onRewarded(RewardItem rewardItem) { switch(Constants.currentAd) { case("REWARD1"): //do something Constants.currentAd = ""; break; case("REWARD2"): //do something Constants.currentAd = ""; break; case("REWARD3"): //do something Constants.currentAd = ""; break; } } }); mAd.loadAd("REWARDED_VIDEO_UNIT_ID", new AdRequest.Builder().build()); } public void showRewardedVideo() { if (mAd.isLoaded()) { mAd.show(); } } 

Constantes.java

 public class Constants { public static String currentAd = ""; } 

Mostrando el anuncio después de hacer clic en el botón

 rewardButton1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Constants.currentAd = "REWARD1"; dismiss(); ((MainActivity) getActivity()).showRewardedVideo(); } }); 

REWARDED_VIDEO_UNIT_ID es un bloque de anuncios para vídeos recompensados ​​en AdMob … elimine el resto. No hay necesidad de otras unidades, usted puede seguir lo que usted tiene gusto en el oyente.

Otras soluciones sencillas …

AbstractRewardVideo.java

 public abstract class AbstractRewardVideo { private RewardedVideoAd mAd; private String adId = "ca-app-pub..."; private Activity activity; abstract protected RewardedVideoAdListener getListener(); public void init(Activity activity) { this.activity = activity; mAd = MobileAds.getRewardedVideoAdInstance(activity); setAdId(adId); loadRewardedVideoAd(); } public Activity getActivity(){ return this.activity; } public void loadRewardedVideoAd() { mAd.loadAd(adId, new AdRequest.Builder().build()); } public void showVideo(){ setListener(getListener()); if (mAd.isLoaded()) { mAd.show(); } else { Utils.exibirToast("Don't loaded!"); } } public void setAdId(@NonNull String id){ this.adId = id; } public void setListener(RewardedVideoAdListener listener){ mAd.setRewardedVideoAdListener(listener); } } 

Reward1.java

 public class Reward1 extends AbstractRewardVideo { public Reward1(Activity activity) { init(activity); } @Override protected RewardedVideoAdListener getListener() { return new Listener(); } private class Listener implements RewardedVideoAdListener { @Override public void onRewarded(RewardItem rewardItem) { //Do something... } public void onRewardedVideoAdLoaded() {} public void onRewardedVideoAdOpened() {} public void onRewardedVideoStarted() {} public void onRewardedVideoAdClosed() { loadRewardedVideoAd(); } public void onRewardedVideoAdLeftApplication() {} public void onRewardedVideoAdFailedToLoad(int i) {} } } 

Reward2.java

 public class Reward2 extends AbstractRewardVideo { public Reward2(Activity activity) { init(activity); } @Override protected RewardedVideoAdListener getListener() { return new Listener(); } private class Listener implements RewardedVideoAdListener { @Override public void onRewarded(RewardItem rewardItem) { //Do something... } public void onRewardedVideoAdLoaded() {} public void onRewardedVideoAdOpened() {} public void onRewardedVideoStarted() {} public void onRewardedVideoAdClosed() { loadRewardedVideoAd(); } public void onRewardedVideoAdLeftApplication() {} public void onRewardedVideoAdFailedToLoad(int i) {} } } 

MainActivity.java

 public class MainActivity extends AppCompatActivity{ Reward1 reward1; Reward2 reward2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); reward1 = new Reward1(this); reward2 = new Reward1(this); ... reward1.showVideo(); ... reward2.showVideo(); } } 
  • Cómo configurar el color de fondo para Textview de forma programática para otro archivo xml?
  • ¿Cómo agregar icono de búsqueda con texto como sugerencia en el campo de texto?
  • Dependency org.json: json: 20090211 se ignora para la depuración, ya que puede estar en conflicto con la versión interna proporcionada por Android
  • Exportación y ejecución del proyecto Unity3D a Android Studio
  • Android keystore dañado
  • Significado de Super Keyword
  • Declarando que una clase implementa OnClickListener vs. declarándolo usted mismo?
  • Gráficos Android gran consumo de memoria montón? - LibGDX
  • Ningún archivo project.properties y NullPointerException durante la creación de la nueva aplicación android
  • Actividad para enviar o redirigir a otras actividades
  • ¿Dónde añadir carpeta de clases en Android Studio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.