Utiliser le SDK IMA pour Android avec Android TV

Nous vous recommandons plusieurs bonnes pratiques pour vous assurer que votre application fonctionne correctement sur Android TV lorsque vous utilisez le SDK IMA pour Android.

Commencez par vous familiariser avec le développement d'applications TV pour Android. Plus précisément, assurez-vous que votre activité est configurée pour la télévision, comme expliqué dans le guide de démarrage. Vous devez également gérer la navigation TV pour vous assurer que les utilisateurs peuvent bien naviguer dans votre application sur Android TV.

Gérer les annonces désactivables

Le SDK optimise les formats désactivables pour les appareils de type téléviseur, par exemple en supprimant la possibilité d'interagir avec un bouton En savoir plus. Par défaut, le SDK se concentre sur le bouton "Ignorer" lorsque cette option est disponible, afin que l'annonce puisse être ignorée sur Android TV. Aucune action supplémentaire n'est donc requise pour accepter les annonces désactivables.

Vous pouvez le configurer en appelant AdsRenderingSettings.setFocusSkipButtonWhenAvailable().

Pour en savoir plus sur les annonces compatibles, consultez la matrice de compatibilité.

Gérer les images de remplacement pour les icônes VAST

Le SDK IMA détecte, affiche et gère les interactions de l'utilisateur avec les images de remplacement de l'icône VAST. Votre application doit écouter les événements ICON_TAPPED et ICON_FALLBACK_IMAGE_CLOSED pour gérer la lecture des annonces qui utilisent la fonctionnalité Pourquoi cette annonce ?

Ajoutez une valeur booléenne pour vérifier si une image de remplacement d'icône VAST s'affiche. Ensuite, écoutez ICON_TAPPED et ICON_FALLBACK_IMAGE_CLOSED pour gérer la lecture de l'annonce autour de l'image de remplacement de l'icône VAST. Consultez l'extrait de code suivant pour voir comment cela peut être géré dans l'exemple avancé.

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;