Supporto della registrazione dei contenuti

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:

  1. Nel tuo servizio di ingresso TV onCreate() , crea un nuovo oggetto TvInputInfo utilizzando il metodo TvInputInfo.Builder corso.
  2. Quando crei il nuovo oggetto TvInputInfo, richiama setCanRecord(true) prima di chiamare build() per indicare che supporta la registrazione.
  3. Registra il tuo oggetto TvInputInfo nel sistema chiamando TvInputManager.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().