Obsługa nagrywania treści

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:

  1. W usłudze wejścia TV onCreate() utwórz nowy obiekt TvInputInfo za pomocą metody TvInputInfo.Builder zajęcia.
  2. Podczas tworzenia nowego obiektu TvInputInfo wywołaj setCanRecord(true) przed nawiązaniem połączenia build() w celu wskazania, że usługa obsługuje nagrywanie.
  3. Zarejestruj obiekt TvInputInfo w systemie, wywołując TvInputManager.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().