Live TV es una app de TV de referencia diseñada para dispositivos de televisión Android. Sin embargo, fabricantes de dispositivos podrían querer agregar más funciones específicas de productos, que no están cubiertos por la implementación predeterminada de TV en vivo, como los ajuste, modo de juego o modo 3D. Para admitir estas funciones específicas del dispositivo o opciones, la TV en vivo admite las siguientes personalizaciones:
- Habilitar el modo de pausa en directo, que permite a los usuarios pausar, adelantar y retroceder. Cómo configurar el modo de pausa en directo para usar el almacenamiento externo en lugar del interno.
- Agregar opciones a la fila de opciones de TV
- Agregar una fila personalizada y agregar opciones en ella
Nota: Transmisión en vivo
Channels es la implementación de Google de TV en vivo que se puede usar tal como está.
con los servicios de Google. Para personalizar Canales en vivo, reemplaza
com.android.tv.*
con com.google.android.tv.*
en estas
instrucciones.
Personalizar TV en vivo
Para personalizar la TV en vivo, el dispositivo Android TV de destino necesita un paquete de personalización.
instalada de forma predeterminada, que debe ser una app del sistema compilada previamente con las
com.android.tv.permission.CUSTOMIZE_TV_APP
.
TV en vivo busca un paquete del sistema con este permiso y verifica el recurso y detecta los objetos Activities del paquete marcados con categorías específicas para la personalización del proceso.
Punto clave: Solo se puede personalizar un paquete en la TV en vivo.
Configurar modo de pausa en directo
La pausa en directo (trickplay) permite que los dispositivos de televisión Android pausen, retrocedan, y adelantar la reproducción de canales. En la implementación de TV en vivo, se puede usar a través de la IU de Controles de reproducción. La Pausa en vivo está habilitada de forma predeterminada en TV en vivo, pero se puede inhabilitar. La pausa en directo también se puede configurar solo en el almacenamiento externo.
Para configurar la pausa en directo, agrega el recurso de cadenas trickplay_mode
.
y establece su valor en una de estas opciones:
enabled
: Habilita la pausa en directo. Este es el valor predeterminado cuando no se proporcionan opciones.disabled
: Inhabilitar la Pausa en vivo.use_external_storage_only
: Configurar la Pausa en vivo para usar almacenamiento externo.
<string name="trickplay_mode">use_external_storage_only</string>
Cómo personalizar las opciones de la TV
Los fabricantes de dispositivos pueden agregar opciones personalizadas para la configuración de TV en vivo a la Menú de opciones de TV, como agregar un acceso directo a la configuración de Imagen de sonido.
Para indicar una opción personalizada, declara un filtro de intents que filtre la categoría.
com.android.tv.category.OPTIONS_ROW
en una actividad. El atributo personalizado
el fabricante del dispositivo en la actividad. La actividad
se inicia si se hace clic en la opción. El título y el ícono de la actividad se usan para
la opción. Las opciones de TV personalizadas deben coincidir con la interfaz de usuario existente para proporcionar la
mejor experiencia del usuario.
Nota: Una actividad solo puede controlar una opción. debido a que la TV en vivo no puede diferenciar los filtros de intents en una actividad con la misma debido a la limitación de Android. Consulta Controla varias opciones en una Activity para encontrar una solución alternativa.
Los fabricantes de dispositivos también pueden colocar una opción personalizada antes o después de la
definiendo android:priority
en AndroidManifest.xml
.
Una opción con un valor de prioridad definido inferior a 100 se muestra antes del
y un valor superior a 100 se muestra después. Múltiples opciones personalizadas (ya sea
antes o después de las opciones existentes) se ordenan por su prioridad en sentido ascendente
en el orden personalizado. 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 TV options. PictureSettingsActivity se inicia 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>
Cómo controlar varias opciones en una actividad
Una opción se asigna al filtro de intents de una actividad y viceversa. Dado que Android
no diferencia los filtros de intents con las mismas categorías y acciones, un
la actividad solo controla una opción, incluso si se declaran varios filtros de intents
que haya en él. Para manejar varias opciones en una actividad, usa
<activity-alias>
en AndroidManifest.xml
. En la
actividad, usa 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 arriba de la fila de opciones de TV. Esta fila personalizada es opcional.
Título de la fila
Define una cadena partner_row_title
en
res/values/strings.xml
El valor de la cadena se usa para el valor
título de la fila.
<string name="partner_row_title">Partner Row</string>
Opciones personalizadas
Para agregar opciones personalizadas a la fila personalizada, sigue el proceso correspondiente.
al menú de opciones de TV, pero cambias el nombre de la categoría a
com.android.tv.category.PARTNER_ROW
en su lugar.
<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>