Usługi wejścia TV umożliwiają wstrzymywanie i wznawianie odtwarzania kanału za pomocą interfejsów API przesuwających w czasie Android 7.0 uwzględnia przesuwanie w czasie pozwalając użytkownikowi zapisać wiele zarejestrowanych sesji.
Użytkownicy mogą planować nagrywanie z wyprzedzeniem lub rozpoczynać je podczas oglądania programu. Gdy system zapisze nagranie, użytkownik może je przeglądać, zarządzać i odtworzyć nagranie za pomocą systemowej aplikacji TV.
Jeśli chcesz udostępnić funkcję nagrywania w usłudze wejścia TV, należy wskazać systemowi, że aplikacja obsługuje nagrywanie, możliwość nagrywania programów, naprawiania i przekazywania wszelkich błędów w trakcie nagrywania i zarządzać nagranymi sesjami.
Określanie obsługi nagrywania
Aby poinformować system, że usługa wejścia TV obsługuje nagrywanie, ustaw
atrybut android:canRecord
w pliku XML metadanych usługi
do użytkownika true
:
<tv-input xmlns:android="http://schemas.android.com/apk/res/android" android:canRecord="true" android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" />
Więcej informacji o pliku metadanych usługi znajdziesz w sekcji Zadeklaruj wejście TV w pliku manifestu.
Możesz też wskazać w kodzie obsługę nagrywania przy użyciu wykonaj te czynności:
- W usłudze wejścia TV
onCreate()
utwórz nowy obiektTvInputInfo
za pomocą metodyTvInputInfo.Builder
zajęcia. - Podczas tworzenia nowego obiektu
TvInputInfo
wywołajsetCanRecord(true)
przed nawiązaniem połączeniabuild()
w celu wskazania, że usługa obsługuje nagrywanie. - Zarejestruj obiekt
TvInputInfo
w systemie, wywołującTvInputManager.updateTvInputInfo()
Nagraj sesję
Gdy usługa wejścia TV zarejestruje, że obsługuje nagrywanie
system wywołuje funkcję
Metoda TvInputService.onCreateRecordingSession()
, gdy potrzebuje dostępu
do implementacji nagrywania w aplikacji. Wdróż własne
TvInputService.RecordingSession
– podklasa i zwrócenie jej
po uruchomieniu wywołania zwrotnego onCreateRecordingSession()
. Ta podklasa odpowiada za:
przełączania na właściwe dane kanału, rejestrowania żądanych danych;
oraz przekazywać systemowi informacje o stanie nagrywania i błędach.
Gdy system wywoła
RecordingSession.onTune()
, przekazuje identyfikator URI kanału, dostrój kanał
określony przez identyfikator URI. Powiadom system o tym, że aplikacja dostroiła
wybranego kanału, wywołując
notifyTuned()
. Jeśli aplikacja nie jest w stanie dostroić kanału do odpowiedniego kanału, zadzwoń pod numer
notifyError()
Następnie system wywołuje metodę
RecordingSession.onStartRecording()
oddzwonienie. Aplikacja musi zacząć nagrywać
natychmiast. Gdy system wywołuje to wywołanie zwrotne, może podać identyfikator URI
zawierający informacje o programie, który zostanie nagrany.
Po zakończeniu nagrywania skopiuj te dane do
RecordedPrograms
tabeli danych.
Na koniec system wywołuje
RecordingSession.onStopRecording()
W tym momencie aplikacja musi się zatrzymać
możesz od razu zacząć nagrywanie. Musisz również utworzyć wpis w sekcji
RecordedPrograms
zawiera identyfikator URI zarejestrowanych danych sesji w sekcji
RecordedPrograms.COLUMN_RECORDING_DATA_URI
i dowolny program
informacje podane przez system w pierwszym wywołaniu
onStartRecording()
Więcej informacji o tym, jak uzyskać dostęp do
RecordedPrograms
tabela,
Więcej informacji znajdziesz w sekcji Zarządzaj nagranymi sesjami.
Obsługa błędów nagrywania
Jeśli podczas nagrywania wystąpi błąd i nie będzie można użyć zarejestrowanych danych,
powiadamia system, wywołując
notifyError()
Możesz też zadzwonić
notifyError()
po utworzeniu sesji nagrywania, aby powiadomić system
że aplikacja nie może już rejestrować sesji.
Jeśli podczas nagrywania wystąpi błąd, ale chcesz podać
częściowe nagrywanie dla użytkowników do odtwarzania, połączenie
notifyRecordingStopped()
, aby umożliwić systemowi:
korzystać z sesji częściowej.
Zarządzaj nagranymi sesjami
System zachowuje informacje o wszystkich zarejestrowanych sesjach ze wszystkich
aplikacje kanałów z możliwością nagrywania
RecordedPrograms
tabeli dostawcy treści. Te informacje są dostępne w
RecordedPrograms
identyfikatorów URI do rejestrowania treści. Używaj interfejsów API dostawcy treści, aby:
do odczytywania, dodawania i usuwania wpisów z tej tabeli.
Więcej informacji o pracy z danymi dostawców treści znajdziesz tutaj: Podstawowe informacje o dostawcach treści
Sprawdzone metody
Telewizory mogą mieć ograniczoną pamięć, więc oceń, kiedy
przeznaczenie miejsca na dane na zapisanie nagranych sesji. Używaj
RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)
, gdy
za mało miejsca, aby zapisać nagraną sesję.
Gdy użytkownik rozpocznie nagrywanie, od razu zacznij rejestrować dane
jak to tylko możliwe. Aby to ułatwić, wykonuj czasochłonne zadania z góry,
np. dostępu do pamięci i przydzielania jej, gdy system wywołuje metodę
onCreateRecordingSession()
oddzwonienie. Dzięki temu możesz zacząć
i nagrywać je natychmiast, gdy
Uruchomienia wywołania zwrotnego onStartRecording()
.