Compatibilité avec l'enregistrement de contenu

Les services d'entrée TV permettent à l'utilisateur de mettre en pause et de reprendre la lecture de la chaîne avec API de décalage temporel Android 7.0 intègre le décalage temporel en permettant à l'utilisateur de conserver plusieurs sessions enregistrées.

Les utilisateurs peuvent programmer des enregistrements à l'avance ou démarrer un enregistrement pendant qu'ils regardent un programme. Une fois que le système a sauvegardé un enregistrement, l'utilisateur peut parcourir, gérer et lire l'enregistrement à l'aide de l'application System TV.

Si vous souhaitez proposer une fonctionnalité d'enregistrement pour votre service d'entrée TV, vous devez indiquer au système que votre application est compatible avec l'enregistrement, implémenter la capacité à enregistrer des programmes, à gérer et à communiquer toute erreur qui se produit pendant l'enregistrement et gérer vos sessions enregistrées.

Indiquer la prise en charge de l'enregistrement

Pour indiquer au système que votre service d'entrée TV prend en charge l'enregistrement, définissez L'attribut android:canRecord dans le fichier XML de métadonnées de votre service vers true:

<tv-input xmlns:android="http://schemas.android.com/apk/res/android"
  android:canRecord="true"
  android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" />

Pour en savoir plus sur le fichier de métadonnées du service, consultez Déclarer votre entrée TV dans le fichier manifeste.

Vous pouvez également indiquer la prise en charge de l'enregistrement dans votre code en utilisant procédez comme suit:

  1. Dans votre service d'entrée TV onCreate() , créez un objet TvInputInfo à l'aide de la méthode TvInputInfo.Builder.
  2. Lorsque vous créez l'objet TvInputInfo, appelez setCanRecord(true) avant d'appeler build() pour indiquer que prend en charge l'enregistrement.
  3. Enregistrez votre objet TvInputInfo auprès du système en appelant TvInputManager.updateTvInputInfo()

Enregistrer une session

Une fois que votre service d'entrée TV a enregistré qu'il prend en charge l'enregistrement fonctionnalité, le système appelle TvInputService.onCreateRecordingSession() lorsqu'elle doit accéder l'implémentation d'enregistrement de votre application. Implémentez votre propre TvInputService.RecordingSession et la renvoyer Lorsque le rappel onCreateRecordingSession() se déclenche. Cette sous-classe est responsable pour passer aux données de canal appropriées, enregistrer les données demandées, et en communiquant l'état et les erreurs d'enregistrement au système.

Lorsque le système appelle RecordingSession.onTune(), en transmettant un URI de chaîne, régler sur le canal spécifié par l'URI. Informer le système que votre application s'est adaptée aux le canal souhaité en appelant notifyTuned() ou, si votre application ne parvient pas à se régler sur la chaîne appropriée, appelez notifyError()

Le système appelle ensuite Rappel RecordingSession.onStartRecording(). Votre application doit lancer l'enregistrement immédiatement. Lorsque le système appelle ce rappel, il peut fournir un URI contenant des informations sur le programme qui est sur le point d'être enregistré. Une fois l'enregistrement terminé, copiez ces données RecordedPrograms tableau de données.

Enfin, le système appelle RecordingSession.onStopRecording() À ce stade, votre application doit s'arrêter immédiatement. Vous devez également créer une entrée dans RecordedPrograms qui inclut l'URI des données de session enregistrée La colonne RecordedPrograms.COLUMN_RECORDING_DATA_URI et n'importe quel programme les informations fournies par le système lors de l'appel initial onStartRecording()

Pour en savoir plus sur l'accès aux RecordedPrograms table, consultez la section Gérer les sessions enregistrées.

Gérer les erreurs d'enregistrement

Si une erreur se produit pendant l'enregistrement, entraînant des données enregistrées inutilisables, avertir le système en appelant notifyError() Vous pouvez également appeler notifyError() après la création d'une session d'enregistrement pour informer le système que votre application ne peut plus enregistrer de sessions.

Si une erreur se produit pendant l'enregistrement, mais que vous souhaitez fournir une enregistrement partiel pour les utilisateurs, lecture, appel notifyRecordingStopped() pour permettre au système de utilisez la session partielle.

Gérer les sessions enregistrées

Le système conserve les informations de toutes les sessions enregistrées de toutes les applications de chaînes compatibles avec l'enregistrement dans le RecordedPrograms tableau du fournisseur de contenu. Ces informations sont accessibles via la RecordedPrograms URI d'enregistrement de contenu. Utiliser les API de fournisseur de contenu pour lire, ajouter et supprimer des entrées dans ce tableau.

Pour en savoir plus sur l'utilisation des données du fournisseur de contenu, consultez <ph type="x-smartling-placeholder"></ph> Principes de base des fournisseurs de contenu

Bonnes pratiques

L'espace de stockage des téléviseurs peut être limité. Faites preuve de discernement lorsque allouant de l'espace de stockage pour sauvegarder les sessions enregistrées. Utilisez RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) lorsque l'espace est insuffisant pour sauvegarder une session enregistrée.

Démarrer l'enregistrement des données dès que l'utilisateur lance l'enregistrement que possible. Pour faciliter ce processus, effectuez les tâches initiales chronophages, comme l'accès et l'allocation d'espace de stockage, lorsque le système appelle Rappel onCreateRecordingSession(). Cela vous permet de commencer enregistre immédiatement Le rappel onStartRecording() se déclenche.