Aufzeichnung von Inhalten unterstützen

Mit TV-Eingabediensten können Nutzer die Kanalwiedergabe über APIs für zeitversetzte Nutzung Android 7.0 erweitert zeitversetztes Fernsehen weil der Nutzer mehrere aufgezeichnete Sitzungen speichern kann.

Nutzer können Aufzeichnungen im Voraus planen oder während der Wiedergabe starten ein Programm. Sobald das System eine Aufzeichnung speichert, kann der Nutzer und spiele sie über die System-TV-App ab.

Wenn Sie eine Aufnahmefunktion für Ihren TV-Eingabedienst bereitstellen möchten, müssen Sie dem System mitteilen, dass Ihre App Aufzeichnungen unterstützt, die Fähigkeit, Sendungen aufzuzeichnen, Fehler zu behandeln und zu kommunizieren und verwalten Sie Ihre aufgezeichneten Sitzungen.

Unterstützung für Aufzeichnungen angeben

Wenn du dem System mitteilen möchtest, dass dein TV-Eingabedienst die Aufzeichnung unterstützt, richte das Attribut android:canRecord in Ihrer Dienstmetadaten-XML-Datei an true:

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

Weitere Informationen zur Dienstmetadatendatei finden Sie unter TV-Eingang deklarieren im Manifest anzugeben.

Alternativ können Sie in Ihrem Code die Aufzeichnungsunterstützung angeben, indem Sie diese Schritte:

  1. Im TV-Eingabedienst onCreate() erstellen Sie mithilfe der MethodeTvInputInfo TvInputInfo.Builder.
  2. Rufen Sie beim Erstellen des neuen TvInputInfo-Objekts setCanRecord(true) vor dem Anruf build(), wenn Ihre die Aufzeichnung unterstützt.
  3. Registrieren Sie Ihr TvInputInfo-Objekt beim System, indem Sie den Aufruf TvInputManager.updateTvInputInfo().

Sitzung aufzeichnen

Nachdem dein TV-Eingabedienst registriert hat, dass er die Aufzeichnung unterstützt ruft das System Ihre TvInputService.onCreateRecordingSession(), wenn darauf zugegriffen werden muss. die Aufzeichnungsimplementierung in Ihrer App. Eigene Implementierung TvInputService.RecordingSession abgeleitet und gibt sie zurück wenn der Callback onCreateRecordingSession() ausgelöst wird. Diese abgeleitete Klasse ist für um zu den richtigen Kanaldaten zu wechseln, die angeforderten Daten aufzuzeichnen, Aufzeichnungsstatus und -fehler an das System senden.

Wenn das System einen Aufruf RecordingSession.onTune(), übergibt Kanal-URI, Abstimmung auf den Kanal die der URI angibt. Benachrichtige das System, dass deine App auf die indem Sie auf den folgenden Link aufrufen: notifyTuned(). Wenn sich deine App nicht auf den richtigen Kanal einstellen kann, rufe die notifyError().

Als Nächstes ruft das System den RecordingSession.onStartRecording()-Callback. Deine App muss mit der Aufzeichnung beginnen sofort. Wenn das System diesen Callback aufruft, kann ein URI bereitgestellt werden. mit Informationen zur Sendung, die demnächst aufgenommen werden soll. Wenn die Aufzeichnung abgeschlossen ist, kopieren Sie diese Daten in den RecordedPrograms Datentabelle.

Schließlich ruft das System RecordingSession.onStopRecording() An dieser Stelle muss Ihre App beendet werden. die Aufnahme sofort beginnen. Sie müssen auch einen Eintrag in der RecordedPrograms die den URI für aufgezeichnete Sitzungsdaten im RecordedPrograms.COLUMN_RECORDING_DATA_URI-Spalte und beliebige Programme Informationen, die das System im ersten Aufruf onStartRecording()

Weitere Informationen zum Zugriff auf die Tabelle „RecordedPrograms“, Weitere Informationen finden Sie im Abschnitt Aufgezeichnete Sitzungen verwalten.

Aufnahmefehler beheben

Wenn während der Aufzeichnung ein Fehler auftritt und die aufgezeichneten Daten dadurch nicht nutzbar sind, das System benachrichtigen, indem Sie notifyError() Sie können auch anrufen, notifyError(), nachdem eine Aufzeichnung erstellt wurde, um das System zu informieren dass deine App keine Sitzungen mehr aufzeichnen kann.

Wenn während der Aufzeichnung ein Fehler auftritt, Teilaufzeichnung für Nutzer zur Wiedergabe, Anruf notifyRecordingStopped(), damit das System diese Teilsitzung verwenden.

Aufgezeichnete Sitzungen verwalten

Das System speichert Informationen zu allen aufgezeichneten Sitzungen von allen aufnahmefähige Kanal-Apps in der RecordedPrograms Contentanbieter-Tabelle. Diese Informationen sind über das RecordedPrograms URIs für die Inhaltsaufzeichnung. Mit APIs für Contentanbieter Einträge aus dieser Tabelle lesen, hinzufügen und löschen.

Weitere Informationen zum Arbeiten mit Contentanbieterdaten finden Sie unter <ph type="x-smartling-placeholder"></ph> Grundlagen des Contentanbieters

Best Practices

Der Speicherplatz auf Fernsehern ist möglicherweise begrenzt. Speicherzuweisung zum Speichern aufgezeichneter Sitzungen. Verwenden Sie RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE), wenn Es ist nicht genügend Speicherplatz vorhanden, um eine aufgezeichnete Sitzung zu speichern.

Wenn der Nutzer die Aufzeichnung startet, beginnen Sie so bald wie möglich mit der Datenaufzeichnung. wie möglich. Erledigen Sie dazu vorab alle zeitaufwendigen Aufgaben, z. B. das Zugreifen auf und Zuweisen von Speicherplatz, onCreateRecordingSession()-Callback. Auf diese Weise können Sie sofort aufzeichnen, wenn der onStartRecording()-Callback wird ausgelöst.