Live TV es una aplicación de TV de referencia diseñada para dispositivos de televisión Android. Sin embargo, es posible que los fabricantes de dispositivos quieran agregar más funciones específicas del producto, que no están cubiertas por la implementación predeterminada de Live TV, como ajuste de imagen, modo de juego o modo 3D. Para admitir estas funciones u opciones específicas del dispositivo, Live TV admite estas personalizaciones:
- Habilitar el modo de cambio de tiempo, que permite a los usuarios pausar, avanzar rápidamente y rebobinar. Configurar el modo de cambio de tiempo para usar almacenamiento externo en lugar de almacenamiento interno.
- Agregar opciones a la fila de opciones de TV.
- Agregar una fila personalizada y agregar opciones en ella.
Nota : Live Channels es la implementación de Live TV de Google que se puede usar tal cual en dispositivos con servicios de Google. Para personalizar los canales en vivo, reemplace com.android.tv.*
con com.google.android.tv.*
en estas instrucciones.
Personalizar TV en vivo
Para personalizar Live TV, el dispositivo Android TV de destino necesita tener instalado un paquete de personalización, que debe ser una aplicación del sistema prediseñada con el permiso com.android.tv.permission.CUSTOMIZE_TV_APP
.
Live TV busca un paquete del sistema con este permiso, verifica los archivos de recursos y detecta las actividades del paquete marcadas con categorías específicas para procesar la personalización.
Punto clave : solo un paquete puede personalizar Live TV.
Configurar el modo de cambio de tiempo
El cambio de tiempo (trickplay) permite a los dispositivos de televisión Android pausar, rebobinar y avanzar rápidamente la reproducción de canales. En la implementación de Live TV, el cambio de tiempo se puede utilizar a través de la interfaz de usuario de controles de reproducción . El cambio de tiempo está habilitado de forma predeterminada en Live TV, pero se puede desactivar. El Time-shifting también se puede configurar para utilizar únicamente almacenamiento externo.
Para configurar el cambio de tiempo, agregue el recurso de cadena trickplay_mode
y establezca su valor en una de estas opciones:
-
enabled
: habilita el cambio de tiempo. Este es el valor predeterminado cuando no se ofrecen opciones. -
disabled
: deshabilita el cambio de tiempo. -
use_external_storage_only
: configure el cambio de tiempo para usar almacenamiento externo.
<string name="trickplay_mode">use_external_storage_only</string>
Personaliza las opciones de televisión
Los fabricantes de dispositivos pueden agregar opciones personalizadas para la configuración de Live TV al menú de opciones de TV existente, como agregar un acceso directo a la configuración de Sonido e Imagen.
Para indicar una opción personalizada, declara un filtro de intención que filtre la categoría com.android.tv.category.OPTIONS_ROW
en una actividad. La característica personalizada la implementa el fabricante del dispositivo en la actividad. La actividad se inicia si se hace clic en la opción. El título y el icono de la actividad se utilizan para la opción. Las opciones de TV personalizadas deben coincidir con la interfaz de usuario existente para brindar la mejor experiencia de usuario.
Nota : una actividad solo puede manejar una opción porque Live TV no puede diferenciar los filtros de intención en una actividad con la misma categoría debido a la limitación de Android. Consulte Manejar múltiples opciones en una actividad para encontrar una solución alternativa.
Los fabricantes de dispositivos también pueden colocar una opción personalizada antes o después de las opciones existentes definiendo android:priority
en AndroidManifest.xml
. Una opción con un valor de prioridad definido inferior a 100 se muestra antes de los elementos existentes y un valor superior a 100 se muestra después. Varias opciones personalizadas (ya sea antes o después de las opciones existentes) se ordenan por prioridad en orden ascendente. Si las opciones tienen la misma prioridad, el orden entre ellas no está definido.
En este ejemplo, la opción aparece primero en la fila de opciones de TV y se inicia PictureSettingsActivity si se hace clic en la opción.
<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>
Manejar múltiples opciones en una actividad
Una opción se asigna al filtro de intención de una actividad y viceversa. Debido a que Android no diferencia los filtros de intención con las mismas categorías y acciones, una actividad solo maneja una opción, incluso si en ella se declaran varios filtros de intención. Para manejar múltiples opciones en una actividad, use <activity-alias>
en AndroidManifest.xml
. En la actividad, utilice getIntent().getComponent()
para identificar la opción en la que se hizo clic.
<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>
Crear una fila personalizada
Los fabricantes de dispositivos pueden agregar y personalizar una fila encima de la fila de opciones de TV. Esta fila personalizada es opcional.
Título de fila
Defina una cadena partner_row_title
en res/values/strings.xml
. El valor de la cadena se utiliza para el título de la fila personalizada.
<string name="partner_row_title">Partner Row</string>
Opciones personalizadas
Para agregar opciones personalizadas a la fila personalizada, siga el proceso para agregar opciones al menú de opciones de TV, pero cambie el nombre de la categoría a 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>