Le SDK natif pour Android version 8.0.0

Dans cette rubrique, vous découvrirez les nouvelles fonctionnalités offertes par le SDK natif de Brightcove pour Android version 8.0.0.

Aperçu

Le SDK natif de Brightcove pour Android est disponible dans une nouvelle version majeure qui apporte d'importants changements d'architecture et des améliorations de lecture, notamment :

  • Compatibilité Android 13
  • Prise en charge du contenu audio uniquement
  • Notification de type média avec commandes de lecture personnalisables à partir de l'écran de notification et de l'écran de verrouillage
  • Prise en charge d'un service d'avant-plan continu pour une lecture en continu
  • Amélioration du chargement des listes de lecture et de la mise en mémoire tampon des médias pour une expérience plus fluide pour l'utilisateur final

Contenu audio uniquement

Le SDK natif de Brightcove pour Android prend en charge la lecture audio uniquement et les contrôles de lecture riches. La lecture audio se poursuit même si l'application hôte est en arrière-plan, ce qui permet à l'utilisateur final de mieux contrôler son expérience d'écoute. La prise en charge de la lecture audio a été intégrée au SDK natif actuel pour les API Android afin d'assurer la rétrocompatibilité avec toutes les fonctionnalités de Brightcove.

Pour plus de détails sur la mise en œuvre, voir le document Audio Only with the Native SDKs .

Changements dans le SDK

Avec cette version du SDK natif pour Android, les classes suivantes ont été ajoutées pour prendre en charge l'intégration continue avec la lecture en arrière-plan, ExoPlayer et les notifications de style média :

  • MediaPlayback<Player>
  • BrightcoveNotification
  • MediaPlaybackService

MediaPlayback<Lecteur>

Avec les modifications apportées au SDK natif pour Android version 8.0.0, Brightcove a complètement découplé la View logique métier de lecture Activity. Cette logique métier appartient désormais à une nouvelle MediaPlayback classe, permettant aux médias de persister au-delà du Activity cycle de vie en utilisant un ForegroundService. L'état de la lecture est partagé entre la notification et la vue correspondante (lorsque l'application est au premier plan).

Lecture des médias
Lecture des médias

Brightcove a considérablement amélioré l'utilisation de la prise en charge des listes de lecture internes d'ExoPlayer. Auparavant, une nouvelle instance d'ExoPlayer était créée pour chaque élément multimédia chargé dans le SDK.

Désormais, la lecture multimédia améliore la pré-mise en mémoire tampon MediaSource d'ExoPlayer. Cela améliore les performances et utilise ExoPlayer Player.Listener pour émettre des états de lecture importants.

La prise en charge de la lecture au premier plan et en arrière-plan fusionnera un FOREGROUND_SERVICE l'autorisation à votre AndroidManifest fichier pendant le processus de création de votre application. Cette autorisation est obligatoire avec le SDK v8.0.0.

Avis de Brightcove

Les utilisateurs peuvent interagir avec le lecteur à partir de l'écran de notification et de l'écran de verrouillage à l'aide de boutons d'action. Par défaut, la notification comprend des boutons de lecture, de pause, d'action suivante et précédente.

Vous pouvez personnaliser les boutons d'action en récupérant l'instance de notification et en définissant un config.

BrightcoveExoPlayerVideoView player = findViewById(R.id.player_view);
PlaybackNotification.Config config = new PlaybackNotification.Config(this)
  .setUsePlayPauseActions(true)
  .setUseNextAction(false)
  .setUsePreviousAction(false)
  .setUseFastForwardAction(true)
  .setUseRewindAction(true);
player.getPlayback().getNotification().setConfig(config);

Le tableau suivant présente les valeurs par défaut et les descriptions des boutons d'action :

Nom de la méthode Valeur par défaut Description
usePlayPauseActions True Définit si les actions de lecture et de pause sont utilisées
useRewindAction True Définit si l'action de rembobinage est utilisée
useRewindActionInCompatView False Si useRewindAction c'est vrai, définit si l'action de retour en arrière est également utilisée en mode compact (y compris la notification de l'écran de verrouillage) ; Sinon, rien ne fait
useFastForwardAction True Définit si l'action d'avance rapide est utilisée
useFastForwardActionInCompactView False Si useFastForwardAction c'est vrai, définit si l'action d'avance rapide est également utilisée en mode compact (y compris la notification sur l'écran de verrouillage) ; Sinon, rien ne fait
usePreviousAction True Si l'action précédente est utilisée
usePrevioiusActionInCompatMode False Si usePreviousAction c'est vrai, définit si l'action précédente est également utilisée en mode compact (y compris la notification de l'écran de verrouillage) ; Sinon, rien ne fait
useNextAction True Si l'action suivante est utilisée
useNextActionInCompactView False Si useNextAction c'est vrai, définit si l'action suivante est également utilisée en mode compact (y compris la notification de l'écran de verrouillage) ; Sinon, rien ne fait
useStopAction False Définit si l'action d'arrêt est utilisée

Métadonnées de notification

Par défaut, la notification utilise les métadonnées de la ressource et crée une implication PendingIntent pour recréer votre activité. Si vous avez besoin d'un contrôle supplémentaire sur les métadonnées affichées dans la notification, vous pouvez implémenter une solution MediaDescriptionAdapter:

new PlaybackNotification.Config(this)
  .setAdapter(new PlaybackNotification.MediaDescriptionAdapter() {
    @Override
    public CharSequence getCurrentContentTitle(
            MediaPlayback playback
    ) {
        // TODO: return the current content title
    }

    @Override
    public Bitmap getCurrentLargeIcon(
            MediaPlayback playback,
            BitmapCallback callback
    ) {
        // TODO: return the bitmap for currently playing item
    }

    @Nullable
    @Override
    public PendingIntent createCurrentContentIntent(
            MediaPlayback<?> playback
    ) {
        // TODO: return your custom PendingIntent
    }

    @Nullable
    @Override
    public CharSequence getCurrentContentText(
            MediaPlayback<?> playback
    ) {
        // TODO: return the current content text
    }

    @Nullable
    @Override
    public CharSequence getCurrentSubText(
            MediaPlayback<?> playback
    ) {
        // TODO: return the current sub-text.
    }
  }
);

MediaPlaybackService

Le SDK natif pour Android prend en charge les notifications conçues pour la lecture de médias. Le comportement par défaut du lecteur lors de la lecture d'une ressource audio est de démarrer un nouveau ForegroundService avec une notification de lecture en cours avec des contrôles média. Les commandes multimédia sont affichées sous le panneau des réglages rapides et sur l'écran de verrouillage :

Les commandes multimédia se trouvent sur l'écran de verrouillage et sous le panneau des réglages rapides :

Contrôles des médias
Contrôles des médias

La notification permet aux utilisateurs de visualiser et de contrôler la lecture lorsque l'application hôte est en arrière-plan. Le SDK natif s'en charge automatiquement :

  • Chargement des pochettes d'album et des métadonnées
  • Boutons d'action (lecture/pause, suivant, précédent, avance rapide, retour en arrière et arrêt)
  • Événements du cycle de vie de l'activité

Vous pouvez personnaliser le style de notification et les contrôles multimédia à l'aide de la PlaybackNotification.Config classe.