Los dispositivos de TV requieren un dispositivo de hardware secundario para interactuar con las aplicaciones, una función un controlador remoto o un controlador de juegos. Por lo tanto, tu app debe admitir la entrada de mando de dirección (pad direccional). Además, es posible que tu app necesite controlar si los controles están sin conexión y si reciben entradas de más de uno. tipo de controlador.
En esta guía, se analizan los requisitos de control de controles para dispositivos de TV.
Controles mínimos para pad direccional
El control predeterminado para un dispositivo de TV es el pad direccional. En general, tu app debe poder operarse desde una que solo tiene los botones arriba, abajo, izquierda, derecha, seleccionar, inicio y atrás. Si su aplicación Un juego suele requerir un control de juegos con controles adicionales. intentan jugar solo con estos controles de pad direccional. De lo contrario, advierte al usuario que se requiere un control y permite que salgan del juego con facilidad mediante el control de pad direccional.
Para obtener más información sobre la navegación con controles de pad direccional para dispositivos de TV, consulta Navegación en TV.
Administra la desconexión de controles
Los controles de TV, por lo general, son dispositivos Bluetooth que podrían intentar ahorrar energía al entren en modo de suspensión y se desconectan del dispositivo de TV. Esto significa que una app podría interrumpirse o reiniciarse si la cuenta no está configurada para admitir estos eventos de reconexión. Estos eventos puede ocurrir en cualquiera de las siguientes circunstancias:
- Mientras se reproduce un video de varios minutos, un pad direccional o un juego, el control puede entrar en modo de suspensión, desconectarse del dispositivo de TV y volver a conectarse más tarde.
- Durante un juego, un jugador nuevo puede unirse a la partida usando un control de juego que aún no están conectados.
- Durante un juego, es posible que un jugador salga del juego y desconecte un control de juego.
Toda actividad de apps para TV que esté sujeta a eventos de desconexión y reconexión se debe configurar como controlar los eventos de reconexión en el manifiesto de la app La siguiente muestra de código demuestra cómo Habilitar una actividad para controlar cambios de configuración, como un teclado o un dispositivo de navegación conectarse, desconectarse o volver a conectarse:
<activity android:name="com.example.android.TvActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|navigation" android:theme="@style/Theme.Leanback"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> ... </activity>
Este cambio de configuración permite que la app continúe ejecutándose a través de una reconexión. en lugar de reiniciarse por el framework de Android, que no es una buena experiencia del usuario.
Administra las variaciones de entrada de pad direccional
Es posible que los usuarios de dispositivos de TV tengan más de un tipo de control que usan con su TV. Para ejemplo, un usuario puede tener un control de pad direccional básico y un control de juegos. Los códigos de teclas que proporciona un control de juego cuando se utiliza para las funciones de un pad direccional puede variar respecto de la tecla mediante un pad direccional básico.
Manejar las variaciones en la entrada del pad direccional para que el usuario no cambiar de controlador para operar tu app. Para más información sobre el manejo variaciones de entrada, consulta Cómo procesar la entrada de un mando de dirección
Administra eventos de botones
Cuando el usuario hace clic en un botón de un control, tu app recibe un evento con un
KeyEvent
El objetivo
el comportamiento del botón podría ser un evento multimedia, como reproducir, pausar o detener contenido, o un evento del tipo TV, como
selección o navegación. Para brindar una buena experiencia del usuario, asigna
comportamiento a los botones del control.
Eventos de IU de TV
Asigna el comportamiento de la IU de TV a los botones que generan KeyEvent
.
de muestra, como se muestra en la siguiente tabla:
KeyEvent | Comportamiento |
---|---|
KEYCODE_BUTTON_B , KEYCODE_BACK | Atrás |
KEYCODE_BUTTON_SELECT , KEYCODE_BUTTON_A y KEYCODE_ENTER
KEYCODE_DPAD_CENTER y KEYCODE_NUMPAD_ENTER | Selección |
KEYCODE_DPAD_UP , KEYCODE_DPAD_DOWN y KEYCODE_DPAD_LEFT
KEYCODE_DPAD_RIGHT | Navegación |
Eventos multimedia
Cuando el usuario mira contenido multimedia, asigna comportamiento a los botones que generan
KeyEvent
, como se muestra en la siguiente tabla. Si tu app controla un
MediaSession
:
usa un MediaControllerAdapter
para llamar a uno de los MediaControllerCompat.TransportControls
métodos que se muestran en la tabla. Ten en cuenta que los botones de selección actúan como Reproducir o Pausar.
botones en este contexto.
KeyEvent | Llamada de TransportControls | Comportamiento |
---|---|---|
BUTTON_SELECT , BUTTON_A y ENTER
DPAD_CENTER y KEYCODE_NUMPAD_ENTER |
play() | Reproducir |
BUTTON_START , BUTTON_SELECT y BUTTON_A
ENTER , DPAD_CENTER y KEYCODE_NUMPAD_ENTER |
pause() | Pausar |
BUTTON_R1 | skipToNext() | Siguiente |
BUTTON_L1 | skipToPrevious() | Anterior |
DPAD_RIGHT , BUTTON_R2 y AXIS_RTRIGGER
AXIS_THROTTLE | fastForward() | Avanzar |
DPAD_LEFT , BUTTON_L2 y AXIS_LTRIGGER
AXIS_BRAKE | rewind() | Retroceder |
N/A | stop() | Detener |
Nota: Cuando usas un MediaSession
, no anules el control de
botones específicos del contenido multimedia, como
KEYCODE_MEDIA_PLAY
o KEYCODE_MEDIA_PAUSE
.
El sistema activa automáticamente
MediaSession.Callback
.
Proporciona el comportamiento adecuado del botón Atrás
El botón Atrás nunca debe funcionar como un botón de activación. Por ejemplo, no lo uses para abrir y cerrar un . Úsalo solo para navegar hacia atrás, con el estilo de la ruta de navegación, por las pantallas anteriores que el reproductor el estado.
Dado que el botón Atrás solo realiza navegación lineal hacia atrás, puedes usar para dejar un menú integrado en la app abierto con un botón diferente y volver a la app. Al presionar de forma consecutiva el botón Atrás, siempre debe llegar a la pantalla principal de Android TV. Por ejemplo: juego > pantalla de pausa del juego > pantalla principal del juego > Pantalla principal de Android TV o Reproducción del programa de TV > Pantalla principal de la app para TV > Pantalla principal de Android TV
Para obtener más información sobre el diseño para la navegación, consulta Cómo diseñar la navegación hacia atrás y hacia arriba Para obtener información sobre la implementación, consulta Proporciona una navegación hacia atrás adecuada.
Administración de controles para juegos
Admite controles de pad direccional
Planifica tu esquema de pad direccional, ya que este es el conjunto predeterminada para dispositivos Android TV. El jugador debe poder usar un pad direccional para todos los aspectos no solo para controlar el juego principal, sino también para navegar por los menús y los anuncios. Por este motivo, asegúrate de que el juego para Android TV no refiera a una interfaz táctil con un lenguaje como "Presiona aquí para continuar".
La manera en que diseñas la interacción del jugador con el control puede ser clave para conseguir un buen usuario una experiencia fluida a los desarrolladores. Analiza las siguientes prácticas recomendadas:
- Comunica los requisitos del control de antemano: usa tu descripción de Google Play. comunicar al jugador las expectativas de los controles. Si un juego es más adecuado para un controlador de juegos con un joystick en lugar de uno con solo un pad direccional, eso es claro. Un jugador que usa un control inadecuado para un juego podría tener una mala experiencia y darle a tu con una mala calificación.
- Usa la asignación de botones consistente: La asignación intuitiva de botones es clave. a una buena experiencia del usuario. Por ejemplo, usa el botón A para cumplir con las costumbres aceptadas para aceptar y el botón B para cancelar. También puedes ofrecer flexibilidad en forma de reasignación. Para obtener más información sobre la asignación de botones, consulta Controla acciones del control.
- Detecta las capacidades del control y ajústalas según corresponda: Consulta el control. sobre sus capacidades para optimizar la coincidencia entre el control y el juego. Por ejemplo: tal vez quieras que un jugador conduzca un objeto moviendo el control en el aire, pero si un el control del jugador no tiene acelerómetro ni hardware de giroscopio, por lo que la acción de hacer gestos no funciona. Consultar el control y, si la detección de movimiento no está habilitada compatible, cambia a un esquema de control alternativo disponible. Más información para consultar las capacidades del control, visita Asistencia controles en las diferentes versiones de Android.
Usa los botones correctos
No todos los controles de juego tienen los botones Inicio, Búsqueda o Menú. Asegúrate de que tu IU no dependa sobre el uso de estos botones.
Administra varios controles
Cuando varios jugadores participan en un juego, cada uno con su propio control, es importante
asignar cada par jugador-control. Si deseas obtener información para implementar control-número
identificables, consulta
getControllerNumber()
Administra la desconexión de controles
Cuando se desconecta un control en medio de un juego, pausa el juego y muestra cuadro de diálogo que le solicita al jugador desconectado que vuelva a conectar su control
Además, ofrece sugerencias para solucionar problemas en el diálogo. Por ejemplo, dile al “Comprueba la conexión Bluetooth”. Para obtener más información sobre la implementación consulta Cómo administrar controladores Actions y el Descripción general de Bluetooth.
Muestra instrucciones del control
Si tu juego proporciona instrucciones de control del juego visuales, usa un imagen del control libre de marcas y que solo incluya botones compatibles con Android.
Para ver ejemplos de imágenes de un control compatible con Android, descarga la Plantilla para control de juegos de Android TV (ZIP): Incluye un control blanco sobre un fondo negro y un control negro sobre un blanco. fondo (que se muestra en la figura 1) como archivo PNG y de Adobe® Illustrator®.
![](https://developer.android.google.cn/static/images/games/game-controller-buttons_2x.png?authuser=9&hl=es)
Figura 1: Ejemplo de instrucciones del controlador con la Plantilla de control de juegos de Android TV.