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:
- Im TV-Eingabedienst
onCreate()
erstellen Sie mithilfe der MethodeTvInputInfo
TvInputInfo.Builder
. - Rufen Sie beim Erstellen des neuen
TvInputInfo
-ObjektssetCanRecord(true)
vor dem Anrufbuild()
, wenn Ihre die Aufzeichnung unterstützt. - Registrieren Sie Ihr
TvInputInfo
-Objekt beim System, indem Sie den AufrufTvInputManager.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.