I servizi di ingresso TV consentono all'utente di mettere in pausa e riprendere la riproduzione del canale utilizzando API time-shifting. Android 7.0 amplia il time-shifting consentendo all'utente di salvare più sessioni registrate.
Gli utenti possono programmare le registrazioni in anticipo o avviarne una mentre la guardano un programma. Dopo che il sistema salva una registrazione, l'utente può sfogliare, gestire e riprodurre la registrazione utilizzando l'app TV di sistema.
Se vuoi offrire funzionalità di registrazione per il tuo servizio di ingresso TV, Devi indicare al sistema che la tua app supporta la registrazione, implementare possibilità di registrare programmi, gestire e comunicare eventuali errori che si verificano durante la registrazione e gestire le sessioni registrate.
Indica il supporto per la registrazione
Per comunicare al sistema che il servizio di ingresso TV supporta la registrazione, imposta
Attributo android:canRecord
nel file XML dei metadati di servizio
a true
:
<tv-input xmlns:android="http://schemas.android.com/apk/res/android" android:canRecord="true" android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" />
Per ulteriori informazioni sul file dei metadati dei servizi, consulta Dichiara il tuo ingresso TV nel file manifest.
In alternativa, puoi indicare il supporto della registrazione nel codice utilizzando questi passaggi:
- Nel tuo servizio di ingresso TV
onCreate()
, crea un nuovo oggettoTvInputInfo
utilizzando il metodoTvInputInfo.Builder
corso. - Quando crei il nuovo oggetto
TvInputInfo
, richiamasetCanRecord(true)
prima di chiamarebuild()
per indicare che supporta la registrazione. - Registra il tuo oggetto
TvInputInfo
nel sistema chiamandoTvInputManager.updateTvInputInfo()
.
Registrare una sessione
Dopo che il servizio di ingresso TV ha registrato che supporta la registrazione
funzionalità, il sistema chiama i tuoi
TvInputService.onCreateRecordingSession()
quando deve accedere
l'implementazione della registrazione dell'app. Implementa la tua
TvInputService.RecordingSession
sottoclasse e la restituisce
quando viene attivato il callback onCreateRecordingSession()
. Questa sottoclasse è responsabile
di passare ai dati del canale corretti,
registrare i dati richiesti
e comunicando al sistema lo stato e gli errori della registrazione.
Quando il sistema chiama
RecordingSession.onTune()
, passando l'URI di un canale, sintonizzati sul canale
specificato dall'URI. Comunica al sistema che la tua app è stata ottimizzata per
canale desiderato chiamando
notifyTuned()
oppure, se la tua app non è sintonizzata sul canale corretto, chiama
notifyError()
.
Il sistema richiama quindi
Chiamata di RecordingSession.onStartRecording()
. L'app deve iniziare a registrare
immediatamente. Quando il sistema richiama questo callback, potrebbe fornire un URI
contenente informazioni sul programma che sta per essere registrato.
Al termine della registrazione, copia questi dati nel
RecordedPrograms
.
Infine, il sistema chiama
RecordingSession.onStopRecording()
. A questo punto, l'app deve interrompersi
registrando subito. Devi inoltre creare una voce nella
RecordedPrograms
che include l'URI dei dati di sessione registrati nella
RecordedPrograms.COLUMN_RECORDING_DATA_URI
colonna ed eventuali programmi
le informazioni che il sistema ha fornito nella chiamata iniziale
onStartRecording()
.
Per ulteriori dettagli su come accedere al
Tabella RecordedPrograms
,
consulta la sezione Gestisci le sessioni registrate.
Gestire gli errori di registrazione
Se si verifica un errore durante la registrazione, che genera dati registrati inutilizzabili,
avvisa il sistema chiamando
notifyError()
.
Puoi anche chiamare
notifyError()
dopo la creazione di una sessione di registrazione per informare il sistema
che la tua app non possa più registrare sessioni.
Se si verifica un errore durante la registrazione, ma vuoi fornire un
una registrazione parziale agli utenti per la riproduzione,
notifyRecordingStopped()
per consentire al sistema di
utilizza la sessione parziale.
Gestisci le sessioni registrate
Il sistema conserva le informazioni per tutte le sessioni registrate da tutti
le app del canale che supportano la registrazione
RecordedPrograms
nella tabella del fornitore di contenuti. Queste informazioni sono accessibili tramite
RecordedPrograms
URI della registrazione dei contenuti. Utilizza le API dei fornitori di contenuti per
leggere, aggiungere ed eliminare le voci da questa tabella.
Per ulteriori informazioni sull'utilizzo dei dati dei fornitori di contenuti, vedi Nozioni di base sul fornitore di contenuti.
Best practice
Lo spazio di archiviazione dei dispositivi TV potrebbe essere limitato, quindi usa il buon senso quando
allocando spazio di archiviazione per salvare le sessioni registrate. Utilizza le funzionalità di
RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)
quando
spazio non sufficiente per salvare una sessione registrata.
Quando l'utente avvia la registrazione, inizia a registrare i dati non appena
il più possibile. Per facilitare questa operazione, completa in anticipo le attività che richiedono molto tempo,
come l'accesso e l'allocazione dello spazio di archiviazione, quando il sistema richiama
Chiamata di onCreateRecordingSession()
. In questo modo puoi iniziare
immediatamente quando
Viene attivato il callback onStartRecording()
.