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:
- Dans votre service d'entrée TV
onCreate()
, créez un objetTvInputInfo
à l'aide de la méthodeTvInputInfo.Builder
. - Lorsque vous créez l'objet
TvInputInfo
, appelezsetCanRecord(true)
avant d'appelerbuild()
pour indiquer que prend en charge l'enregistrement. - Enregistrez votre objet
TvInputInfo
auprès du système en appelantTvInputManager.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.