Cómo usar el SDK de IMA para Android con Android TV

Sugerimos aplicar varias prácticas recomendadas para garantizar que tu app funcione correctamente en Android TV cuando se usa el SDK de IMA para Android.

Para comenzar, familiarízate con el desarrollo de apps para TV para Android. Específicamente, asegúrate de que tu actividad esté configurada para TV, como se explica en la guía de inicio. También te recomendamos que controles la navegación para TV a fin de asegurarte de que los usuarios puedan navegar bien por tu app en Android TV.

Controla los anuncios que se pueden omitir

El SDK optimiza los formatos que se pueden omitir para dispositivos similares a TVs, por ejemplo, cuando quita la capacidad de interactuar con un botón de Más información. De forma predeterminada, el SDK establece el foco en el botón Omitir cuando la opción de omitir está disponible para que el anuncio se pueda omitir en Android TV. Por lo tanto, no se necesita trabajo adicional para admitir anuncios que se pueden omitir.

Para configurarlo, llama a AdsRenderingSettings.setFocusSkipButtonWhenAvailable().

Para obtener más información sobre los anuncios compatibles, consulta la matriz de compatibilidad.

Administra imágenes de resguardo de íconos de VAST

El SDK de IMA detecta, procesa y controla la interacción del usuario con las imágenes de resguardo del ícono de VAST. Tu app debe escuchar los eventos ICON_TAPPED y ICON_FALLBACK_IMAGE_CLOSED a fin de controlar la reproducción de anuncios que utilizan "¿Por qué este anuncio?" (WTA).

Agrega un valor booleano para hacer un seguimiento de si se muestra una imagen de resguardo de ícono de VAST. Luego, escucha ICON_TAPPED y ICON_FALLBACK_IMAGE_CLOSED para controlar la reproducción de anuncios alrededor de la imagen de resguardo del ícono de VAST. Consulta el siguiente fragmento de código para ver un ejemplo de cómo se controla en el Ejemplo avanzado.

app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerController.java

// Copyright 2014 Google Inc. All Rights Reserved.

package com.google.ads.interactivemedia.v3.samples.videoplayerapp;

import android.app.UiModeManager;
import android.content.Context;

...

// Tracks if the SDK is playing an ad, since the SDK might not necessarily use
// the video player provided to play the video ad.
private boolean isAdPlaying;

// Tracks whether the SDK has a VAST icon fallback image showing.
private boolean isConnectedTvFallbackImageShowing = false;

// View that handles taps to toggle ad pause/resume during video playback.
private View playPauseToggle;

// View that we can write log messages to, to display in the UI.
private Logger log;

...

    adsManager.addAdEventListener(
        new AdEvent.AdEventListener() {
          /** Responds to AdEvents. */
          @Override
          public void onAdEvent(AdEvent adEvent) {

              ...

              case CONTENT_RESUME_REQUESTED:
                // AdEventType.CONTENT_RESUME_REQUESTED is fired when the ad is
                // completed and you should start playing your content.
                resumeContent();
                break;
              case ICON_TAPPED:
                // The user has tapped a VAST icon fallback image. On Android
                // mobile apps, the SDK will navigate to the landing page. On
                // Connected TV devices, the SDK will present a modal dialog
                // containing the VAST icon fallback image.

                // Check if the app is running on a TV device.
                UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE);
                if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
                  isConnectedTvFallbackImageShowing = true;
                }

                // Focus the IMA WebView for easier access to ad UI elements.
                adsManager.focus();
                break;
              case PAUSED:
                if (isConnectedTvFallbackImageShowing) {
                  // Do not show the controls; continue to leave the controls in
                  // the hands of the ads SDK.
                  break;
                }
                isAdPlaying = false;
                videoPlayerWithAdPlayback.enableControls();
                break;
              case ICON_FALLBACK_IMAGE_CLOSED:
                // The user has closed the VAST icon fallback image. This may
                // be a good time to resume ad playback if the user is ready to
                // continue playing the ad. This event only fires for Connected
                // TV devices.


                isConnectedTvFallbackImageShowing = false;
                adsManager.resume();
                break;
              case RESUMED:
                isAdPlaying = true;
                videoPlayerWithAdPlayback.disableControls();
                break;