Live TV — это эталонное телевизионное приложение, разработанное для телевизионных устройств Android. Однако производители устройств могут захотеть добавить дополнительные функции для конкретных продуктов, которые не включены в реализацию Live TV по умолчанию, например настройку изображения, игровой режим или режим 3D. Для поддержки этих функций или параметров, специфичных для устройства, Live TV поддерживает следующие настройки:
- Включение режима сдвига во времени, который позволяет пользователям делать паузы, перематывать вперед и назад. Настройка режима сдвига во времени для использования внешнего хранилища вместо внутреннего хранилища.
- Добавление параметров в строку параметров телевизора.
- Добавление пользовательской строки и добавление в нее параметров.
Примечание . Live Channels — это реализация Google Live TV, которую можно использовать как есть на устройствах с сервисами Google. Чтобы настроить Live Channels, замените com.android.tv.*
на com.google.android.tv.*
в этих инструкциях.
Настройка прямого эфира
Чтобы настроить Live TV, на целевом устройстве Android TV должен быть установлен пакет настройки, который должен быть предварительно созданным системным приложением с разрешением com.android.tv.permission.CUSTOMIZE_TV_APP
.
Live TV ищет системный пакет с этим разрешением, проверяет файлы ресурсов и обнаруживает действия пакета, отмеченные определенными категориями , для обработки настройки.
Ключевой момент : только один пакет может настроить Live TV.
Настройка режима сдвига во времени
Сдвиг во времени (trickplay) позволяет телевизионным устройствам Android приостанавливать, перематывать назад и вперед воспроизведение канала. В реализации Live TV сдвиг во времени можно использовать через пользовательский интерфейс управления воспроизведением . Сдвиг во времени включен по умолчанию в Live TV, но его можно отключить. Сдвиг во времени также можно настроить на использование только внешнего хранилища.
Чтобы настроить сдвиг во времени, добавьте строковый trickplay_mode
и установите для него одно из следующих значений:
-
enabled
: включить сдвиг во времени. Это значение по умолчанию, если параметры не указаны. -
disabled
: отключить сдвиг во времени. -
use_external_storage_only
: настроить сдвиг времени для использования внешнего хранилища.
<string name="trickplay_mode">use_external_storage_only</string>
Настройка параметров телевизора
Производители устройств могут добавлять пользовательские параметры для настроек Live TV в существующее меню параметров телевизора, например, добавлять ярлык к настройкам Sound Picture.
Чтобы указать настраиваемый параметр, объявите фильтр намерений, который фильтрует категорию com.android.tv.category.OPTIONS_ROW
в действии. Настраиваемая функция реализована производителем устройства в действии. Активность запускается, если выбрана опция. Название и значок действия используются для опции. Индивидуальные параметры телевизора должны соответствовать существующему пользовательскому интерфейсу, чтобы обеспечить наилучшее взаимодействие с пользователем.
Примечание . Действие может обрабатывать только один вариант, поскольку Live TV не может различать фильтры намерений в действии с той же категорией из-за ограничения Android. Обходной путь см. в разделе Обработка нескольких параметров в действии.
Производители устройств также могут поместить пользовательский параметр до или после существующих параметров, определив android:priority
в AndroidManifest.xml
. Параметр с определенным значением приоритета ниже 100 отображается перед существующими элементами, а значение выше 100 отображается после. Несколько пользовательских параметров (до или после существующих параметров) сортируются по их приоритету в порядке возрастания. Если параметры имеют одинаковый приоритет, порядок среди них не определен.
В этом примере параметр отображается первым в строке параметров телевизора, а действие 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>
Обработка нескольких параметров в действии
Опция сопоставляется с фильтром намерений действия и наоборот. Поскольку Android не различает фильтры намерений с одинаковыми категориями и действиями, действие обрабатывает только один параметр, даже если в нем объявлено несколько фильтров намерений. Чтобы обрабатывать несколько параметров в действии, используйте <activity-alias>
в AndroidManifest.xml
. В действии используйте getIntent().getComponent()
, чтобы определить выбранную опцию.
<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>
Создание пользовательской строки
Производители устройств могут добавлять и настраивать строку над строкой параметров телевизора. Эта пользовательская строка является необязательной.
Название строки
Определите строку partner_row_title
в файле res/values/strings.xml
. Значение строки используется для пользовательского заголовка строки.
<string name="partner_row_title">Partner Row</string>
Пользовательские параметры
Чтобы добавить пользовательские параметры в настраиваемую строку, выполните процедуру добавления параметров в меню параметров телевизора, но вместо этого измените имя категории на 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>