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>
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>
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>