Usar o SDK do IMA para Android com o Android TV

Recomendamos várias práticas recomendadas para garantir que seu app funcione corretamente na Android TV ao usar o SDK do IMA para Android.

Para começar, familiarize-se com o desenvolvimento de apps de TV para Android. Especifique se a atividade está configurada para TV conforme explicado no guia de início. Você também precisa processar a navegação na TV para garantir que os usuários possam navegar bem no seu app no Android TV.

Processar anúncios puláveis

O SDK otimiza formatos puláveis para dispositivos como TVs, por exemplo, eliminando a capacidade de interagir com um botão Saiba mais. Por padrão, o SDK define o foco no botão de pular quando ele está disponível para que o anúncio possa ser pulado no Android TV. Portanto, nenhum trabalho extra é necessário para oferecer suporte a anúncios puláveis.

Para configurar isso, chame AdsRenderingSettings.setFocusSkipButtonWhenAvailable().

Para mais informações sobre quais anúncios são compatíveis, confira a matriz de compatibilidade.

Processar imagens substitutas de ícones VAST

O SDK do IMA detecta, renderiza e processa a interação do usuário com as imagens de substituição do ícone VAST. Seu app precisa detectar os eventos ICON_TAPPED e ICON_FALLBACK_IMAGE_CLOSED para processar a reprodução de anúncios que usam "Por que esse anúncio?" (WTA, na sigla em inglês).

Adicione um booleano para acompanhar se uma imagem substituta do ícone VAST está sendo mostrada. Em seguida, detecte ICON_TAPPED e ICON_FALLBACK_IMAGE_CLOSED para processar a reprodução de anúncios ao redor da imagem substituta do ícone VAST. Consulte o snippet de código abaixo para conferir como isso é tratado no Exemplo avançado.

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;