Dostosuj referencyjną aplikację telewizyjną

Live TV to referencyjna aplikacja telewizyjna przeznaczona dla urządzeń telewizyjnych z systemem Android. Jednak producenci urządzeń mogą chcieć dodać więcej funkcji specyficznych dla produktu, które nie są objęte domyślną implementacją telewizji na żywo, takich jak regulacja obrazu, tryb gry lub tryb 3D. Aby obsługiwać te funkcje lub opcje specyficzne dla urządzenia, Live TV obsługuje następujące dostosowania:

  • Włączenie trybu przesunięcia w czasie, który umożliwia użytkownikom wstrzymywanie, przewijanie do przodu i do tyłu. Konfigurowanie trybu przesunięcia czasu w celu korzystania z pamięci zewnętrznej zamiast pamięci wewnętrznej.
  • Dodawanie opcji do wiersza opcji telewizora.
  • Dodanie niestandardowego wiersza i dodanie w nim opcji.

Uwaga : kanały na żywo to opracowana przez Google implementacja telewizji na żywo, z której można korzystać na urządzeniach z usługami Google. Aby dostosować kanały na żywo, w tych instrukcjach zamień com.android.tv.* na com.google.android.tv.* .

Dostosuj telewizję na żywo

Aby dostosować telewizję na żywo, na docelowym urządzeniu z systemem Android TV musi być zainstalowany pakiet dostosowywania, którym musi być wstępnie skompilowana aplikacja systemowa z uprawnieniem com.android.tv.permission.CUSTOMIZE_TV_APP .

Live TV wyszukuje pakiet systemowy z tym uprawnieniem, sprawdza pliki zasobów i wykrywa działania pakietu oznaczone określonymi kategoriami w celu przetworzenia procesu dostosowywania.

Kluczowy punkt : tylko jeden pakiet umożliwia dostosowanie telewizji na żywo.

Skonfiguruj tryb przesunięcia czasu

Przesunięcie w czasie (trickplay) umożliwia urządzeniom telewizyjnym z systemem Android wstrzymywanie, przewijanie do tyłu i szybkie odtwarzanie kanału do przodu. W implementacji Live TV przesunięcia w czasie można używać w interfejsie sterowania Play . Przesunięcie czasowe jest domyślnie włączone w telewizji na żywo, ale można je wyłączyć. Przesunięcie czasowe można również skonfigurować tak, aby korzystało wyłącznie z pamięci zewnętrznej.

Aby skonfigurować przesunięcie w czasie, dodaj zasób stringowy trickplay_mode i ustaw jego wartość na jedną z następujących opcji:

  • enabled : Włącz przesunięcie w czasie. Jest to wartość domyślna, gdy nie podano żadnych opcji.
  • disabled : Wyłącz przesunięcie czasu.
  • use_external_storage_only : Skonfiguruj przesunięcie czasu, aby korzystać z pamięci zewnętrznej.
<string name="trickplay_mode">use_external_storage_only</string>
Interfejs sterowania odtwarzaniem jest aktywowany po naciśnięciu środkowego przycisku pada kierunkowego.

Rysunek 1 . Interfejs sterowania odtwarzaniem jest aktywowany po naciśnięciu środkowego przycisku pada kierunkowego.

Dostosuj opcje telewizji

Producenci urządzeń mogą dodawać niestandardowe opcje ustawień telewizji na żywo do istniejącego menu opcji telewizji, na przykład dodając skrót do ustawień obrazu dźwięku.

Aby wskazać opcję niestandardową, zadeklaruj filtr intencji, który filtruje kategorię com.android.tv.category.OPTIONS_ROW w działaniu. Funkcja niestandardowa jest implementowana przez producenta urządzenia w działaniu. Aktywność uruchamia się po kliknięciu opcji. W opcji używany jest tytuł i ikona działania. Aby zapewnić użytkownikom najlepszą wygodę, dostosowane opcje telewizora powinny pasować do istniejącego interfejsu użytkownika.

Uwaga : działanie może obsługiwać tylko jedną opcję, ponieważ Live TV nie może rozróżnić filtrów intencji w działaniu z tej samej kategorii ze względu na ograniczenia Androida. Aby zapoznać się z obejściem, zobacz temat Obsługa wielu opcji w działaniu .

Producenci urządzeń mogą również umieścić opcję niestandardową przed lub po istniejących opcjach, definiując android:priority w AndroidManifest.xml . Opcja o określonej wartości priorytetu niższej niż 100 wyświetlana jest przed istniejącymi pozycjami, a wartość wyższa niż 100 wyświetlana jest po. Wiele opcji niestandardowych (przed lub po istniejących opcjach) jest sortowanych według ich priorytetu w kolejności rosnącej. Jeśli opcje mają ten sam priorytet, kolejność między nimi jest nieokreślona.

W tym przykładzie opcja pojawia się jako pierwsza w wierszu opcji telewizora, a po kliknięciu tej opcji uruchamia się PictureSettingsActivity.

<activity android:name=".PictureSettingsActivity"
    android:label="@string/activity_label_picture_settings"
          android:theme="@style/Theme.Panel">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_brightness"
        android:label="@string/option_label_brightness"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity>

Przykładowy wiersz dostosowanych opcji telewizyjnych

Rysunek 2 . Przykładowy wiersz dostosowanych opcji telewizora (Jasność i Oszczędność energii).

Przykładowe niestandardowe opcje telewizora.

Rysunek 3 . Przykładowe niestandardowe opcje telewizora.

Obsługa wielu opcji w działaniu

Opcja jest mapowana na filtr intencji działania i odwrotnie. Ponieważ Android nie rozróżnia filtrów intencji z tymi samymi kategoriami i akcjami, działanie obsługuje tylko jedną opcję, nawet jeśli zadeklarowanych jest w nim wiele filtrów intencji. Aby obsłużyć wiele opcji w działaniu, użyj <activity-alias> w AndroidManifest.xml . W działaniu użyj metody getIntent().getComponent() , aby zidentyfikować klikniętą opcję.

<activity-alias android:name=".AnyUniqueName"
    android:targetActivity=".PictureSettingsActivity">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_energy_saving"
        android:label="@string/option_label_energy_saving"
        android:priority="1">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity-alias>

Utwórz wiersz niestandardowy

Producenci urządzeń mogą dodawać i dostosowywać wiersz nad wierszem opcji telewizora. Ten wiersz niestandardowy jest opcjonalny.

Tytuł wiersza

Zdefiniuj ciąg partner_row_title w res/values/strings.xml . Wartość ciągu jest używana jako niestandardowy tytuł wiersza.

<string name="partner_row_title">Partner Row</string>

Opcje niestandardowe

Aby dodać opcje niestandardowe do wiersza niestandardowego, wykonaj procedurę dodawania opcji do menu opcji telewizora, ale zamiast tego zmień nazwę kategorii na com.android.tv.category.PARTNER_ROW .

<activity android:name=".ThreeDimensionalSettingDialogActivity"
    android:label="@string/activity_label_3d"
    android:theme="@android:style/Theme.Material.Light.Dialog">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_3d"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.PARTNER_ROW" />
    </intent-filter>
</activity>

Przykładowy opcjonalny wiersz niestandardowy.

Rysunek 4 . Przykładowy opcjonalny wiersz niestandardowy.

Przykładowe okno dialogowe opcji niestandardowych.

Rysunek 5 . Przykładowe okno dialogowe opcji niestandardowych.