Настройте эталонное ТВ-приложение

Live TV — это эталонное телевизионное приложение, разработанное для телевизионных устройств Android. Однако производители устройств могут захотеть добавить дополнительные функции, специфичные для продукта, которые не предусмотрены реализацией Live TV по умолчанию, например настройку изображения, игровой режим или режим 3D. Для поддержки этих функций или опций, специфичных для устройства, Live TV поддерживает следующие настройки:

  • Включение режима смещения во времени, который позволяет пользователям делать паузу, перематывать вперед и назад. Настройка режима смещения во времени для использования внешнего хранилища вместо внутреннего.
  • Добавление параметров в строку параметров телевизора.
  • Добавление пользовательской строки и добавление в нее опций.

Примечание . Live Channels — это реализация Live TV от Google, которую можно использовать без изменений на устройствах со службами Google. Чтобы настроить прямые каналы, замените 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>
Пользовательский интерфейс управления воспроизведением активируется после нажатия центральной кнопки D-pad.

Рисунок 1 . Пользовательский интерфейс управления воспроизведением активируется после нажатия центральной кнопки D-pad.

Настройте параметры телевизора

Производители устройств могут добавлять собственные параметры настроек Live TV в существующее меню параметров телевизора, например, добавляя ярлык к настройкам звука и изображения.

Чтобы указать настраиваемый параметр, объявите фильтр намерений, который фильтрует категорию 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>

Пример строки настроенных параметров телевизора

Фигура 2 . Пример строки настроенных параметров телевизора (Яркость и Энергосбережение).

Примеры пользовательских опций телевизора.

Рисунок 3 . Примеры пользовательских опций телевизора.

Обработка нескольких вариантов в действии

Опция сопоставляется с фильтром намерений действия и наоборот. Поскольку 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>

Пример необязательной пользовательской строки.

Рисунок 4 . Пример необязательной пользовательской строки.

Пример диалогового окна пользовательских опций.

Рисунок 5 . Пример диалогового окна пользовательских опций.