Una introducción a Android TV
() translation by (you can also view the original English article)
¿Quieres entender mejor Android TV? Quizá quieres ampliar tus proyectos existentes de Android para soportar ésta nueva plataforma, o quizá tienes una idea para una aplicación Android TV que quieres desarrollar.
Cualquiera que sea tu motivación, éste artículo te introducirá a la plataforma Android TV, que es Android TV y las características de una efectiva aplicacion para TV, para crear y probar tu propio proyecto de ejemplo de Android TV.
1. ¿Qué es Android TV?
Anunciada en Google IO 2014, Android TV es la nueva plataforma de TV inteligente de Google. Usuarios pueden comprar una TV con una nueva plataforma integrada, o pueden añadir Android TV a su televisión actual al comprar un dispositivo receptor independiente, tal como el Nexus Player.
Esencialmente, Android TV lleva a la pantalla grande las aplicaciones y funcionalidades que los usuarios ya disfrutan en pequeños dispositivos Android. Los usuarios pueden descargar aplicaciones Android TV de la conocida Google Play store, y la plataforma soporta Google Cast, así que los usuarios pueden llevar contenido de su teléfono inteligente o tablet a su dispositivo Android TV.
2. Diseñando para Android TV
Si has experimentado el desarrollo para teléfonos inteligentes o tablets Android, Android TV te resultará inmediatamente familiar, pero hay algunas diferencias cruciales que necesitarás tener en cuenta. Ésta sección cubre las mejores prácticas que son únicas para Android TV.
Proporciona una Efectiva "Experiencia a 10 pies"
De acuerdo a la documentación oficial de Android TV, el televidente promedio se sienta a unos 10 pies de su pantalla, así que el contenido de la pantalla debe ser claramente visible desde una distancia de 10 pies.
Un truco para entregar una efectiva "experiencia a 10 pies" es diseñar una interfaz de usuario que se redimensiona automáticamente, dependiendo del tamaño de la pantalla de TV. Ésto significa usar un tamaño relativo al layout, tal como fill-parent,
más bien que a un tamaño absoluto, y optando por unidades de pixeles independientes de la densidad más bien que unidades de pixeles absolutas.
Deberías también mantener el texto al mínimo pues el texto se vuelve más difícil de leer a una distancia. Tanto como sea posible, deberías comunicarte con tus usuarios por otros métodos, tales como comandos de voz, efectos de sonido, video, e imágenes.
Si necesitas incluir texto, hazlo más fácil de leer al:
- evitar las fuentes que no son legibles
- evitar fuentes que son muy delgadas o muy gruesas
- usar texto tenue en fondos negros
- dividir texto en pequeños bloques
Minimizar y Simplificar la Interacción
Piensa en como interactuar con tu TV. Generalmente ejecutas unas cuantas interacciones simples para obtener el contenido que quieres, ya sea cambiar de canal, arrancar el reproductor de DVD, o lanzar tu aplicación favorita de transmisión de contenido.
Tú no esperas tener que realizar complicadas interacciones-tampoco los usuarios de Android TV. Si quieres obtener la atención del usuario, tu aplicación necesita tener el menor número de pantallas posibles entre el punto de entrada de la aplicación y la inmersión en el contenido.
Una vez que el usuario se adentra en tu aplicación, deberías mantener las interacciones al mínimo y evitar cualquier interacción complicada pues el típico usuario de TV tiene control limitado a su disposición-generalmente su control remoto, o control de juego, o la aplicación oficial de Android TV instalada en su teléfono inteligente o tablet.
Navegación Fácil
Los controles de TV tienden a estar restringidos a una cruceta o pad direccional y un botón de seleccionar, así tu desafío es crear un eficaz esquema de navegación para tu aplicación, usando éstos controles limitados.
Un truco es utilizar un grupo de vistas (tales como List View o Grid View) que automáticamente arregla los elementos de interfaz de usuario de tu aplicación en listas o cuadrículas, que son fácil de navegar con una cruceta o pad direccional y un botón de seleccionar.
Tus usuarios también deberían poder identificar fácilmente que objeto está actualmente seleccionado. Puedes resaltar el objeto actualmente seleccionado usando guías visuales, tales como, tamaño, sombra, brillantez, animación, y opacidad.
Simple y Prolijo.
Android TV puede darte un escenario más real donde jugar, pero no te emociones y trates de llenar cada pulgada del espacio. Una simple y prolija interfaz de usuario no es únicamente mas atractiva visualmente, también es más fácil de navegar-algo particularmente importante considerando los controles limitados disponibles para tu típico usuario de Android TV.
Una interfaz de usuario que contiene pocos elementos de interfaz de usuario bien definidos también va a proporcionar una mejor "experiencia a 10 pies" que una pantalla llena con muchos elementos más pequeños de interfaz de usuario.
Soporte de Modo Paisaje
Todas tus actividades deben soportar orientación de paisaje o tu aplicación no aparecerá para tus usuarios en la Google Play Store.
Si estás desarrollando una aplicación que también puedes ejecutar en teléfonos inteligentes y tablets, ten en cuenta que si tu proyecto contiene android:screenOrientation="portrait"
el requisito android.hardware.screen.portrait
es implícitamente establecido en true
. Necesitas especificar que aunque tu aplicación soporte orientación de retrato donde esté disponible, puede ejecutarse en dispositivos donde el modo retrato no es soportado (Android TV):
1 |
<uses-feature
|
2 |
android:name="android.hardware.screen.portrait" |
3 |
android:required="false" /> |
Permitir Overscan
Para asegurar que nunca haya espacio vacío alrededor de los extremos de tu pantalla, las televisiones pueden cortar los extremos del contenido en un proceso conocido como overscan. Debido a que no quieres perder contenido importante debido al overscan deberás dejar un margen alrededor de los extremos de tu aplicación libre de cualquier elemento de la interfaz de usuario.
La librería v17 Leanback automáticamente aplica márgenes tomando en cuenta el overscan para tu aplicación. Alternativamente, puedes crear tus propios márgenes considerando el overscan al dejar 10% de espacío vacío alrededor de los extremos de tu aplicación. Ésto se traduce a un margen de 48dp alrededor de los extremos derecho e izquierdo (android:layout_marginRight="48dp"
), y 27dp a lo largo de la parte superior e inferior (android:layout_marginBottom="27dp"
).
Diseñar tomando en cuenta las limitaciones del Hardware de Android TV.
Las Android TVs no tienen muchas de las características del hardware típicamente disponibles en otros dispositivos Android. Cuando estás desarrollando para la plataforma Android TV, no puedes usar lo siguiente:
- Comunicaciones de Campo Cercano (NFC)
- GPS
- Cámara
- Micrófono
- Pantalla táctil
- Telefonía
Si tu quieres que tu aplicación se ejecute en dispositivos que no son TV, tales como teléfonos inteligentes y tablets, pueden especificar que aunque tu aplicación no requiere éstas características de hardware, las usará donde estén disponibles, por ejemplo:
1 |
<uses-feature android:name="android.hardware.touchscreen" |
2 |
android:required="false"/> |
Ten presente también que las siguientes declaraciones de manifiesto de permiso de usos implican características de hardware que Android TV no soportan:
GRABAR_AUDIO
CÁMARA
ACCESS_COARSE_LOCATION (ACCESO A UBICACIÓN APROXIMADA)
ACCESS_FINE-LOCATION (ACCESO A UBICACIÓN PRECISA)
3. Creando un Proyecto de Ejemplo de Android TV.
En la parte final de éste tutorial, tomaremos veremos algo de código listo para TV al crear y probar un proyecto básico de Android TV.
Antes de que puedas desarrollar algo para la plataforma Android TV, asegúrate de que has actualizado tu SDK a Android 5.0 (API 21) o superior, y tus herramientas SDK a la versión 24.0.0 o superior.
Una vez que las actualizaciones estén listas, es momento de crear tu aplicación:
- Lanza Android Studio.
- Selecciona Start a new Android Studio Project
- Dále un nombre y un dominio a tu proyecto. Da Click en Next.
- Selecciona TV, y luego desmarca las demás casillas de verificación. Aunque puedes crear proyectos de Android TV que tengan un módulo de teléfono inteligente, tablet y/o Android Wear, por simpleza, crearemos un proyecto de un solo módulo. Da click en Next.



5. Selecciona Android TV Activity y luego da click en Next.
6. Deja la configuración por defecto y da click en Finish.



Android Studio entonces creará tu proyecto.
4. Dividiendo el Manfiesto.
Ahora que has creado tu proyecto de ejemplo, observaremos con detenimiento el Manifiesto de Android, pues éste archivo contiene mucho código específico para TV.
Nota que aunque la mayoría de éste código se genera automáticamente cuando creas un proyecto de Android TV, he puesto algunas adiciones y ajustes que están marcados claramente en el texto.
1 |
<?xml version="1.0" encoding="utf-8"?>
|
2 |
http://schemas.android.com/apk/res/android" |
3 |
package="com.example.jessica.tvdemo" > |
4 |
<uses-permission android:name="android.permission.INTERNET" /> |
5 |
<uses-permission android:name="android.permission.RECORD_AUDIO" /> |
Como ya lo mencioné, el permiso android.permission.RECORD_AUDIO
implica que tu aplicación requiere android.hardware.microphone
. Así ésta línea de codigo evita eficazmente que tu aplicación se instale en dispositivos que no tienen acceso a un micrófono. Si tu aplicación puede funcionar sin un micrófono, deberías agregar lo siguiente:
1 |
<uses-feature
|
2 |
android:name="android.hardware.microphone" |
3 |
android:required="false" /> |
Añadiendo el código de arriba significa que los usuarios pueden instalar tu aplicación en dispositivos que no tienen acceso a hardware con micrófono.
1 |
<uses-feature
|
2 |
android:name="android.hardware.touchscreen" |
3 |
android:required="false" /> |
Mientras que el soporte para pantalla táctil es encontrado en muchos dispositivos Android, éste no es el caso de Android TV. Tu aplicación Android TV debe declarar que no requiere soporte para pantalla táctil.
1 |
<uses-feature
|
2 |
android:name="android.software.leanback" |
El snippet de arriba declara que tu aplicación usa la interfaz Leanback que discutimos previamente.
1 |
android:required="true" /> |
Si quieres que tu aplicación se ejecute en dispositivos que no son TV donde no es soportado Leanback, necesitarás cambiar la línea de arriba a android:required="false"
.
1 |
<application
|
2 |
android:allowBackup="true" |
3 |
android:icon="@mipmap/ic_launcher" |
4 |
android:label="@string/app_name" |
5 |
android:theme="@style/Theme.Leanback" |
La adición de arriba aplica el tema Leanback a tu proyecto.
1 |
android:banner="@drawable/banner" > |
Banners de aplicaciones representan tu aplicación en la pantalla de inicio de Android TV y son como el usuario lanza tu aplicación. Tu banner de aplicación debe ser una imagen de 320px x 180px y debe incluir texto.
Si quieres usar el mismo banner en todas tus actividades, debes añadir el atributo android:banner
a la etiqueta <application>
de tu manifiesto como lo hice aquí. Si quieres proporcionar un banner diferente para cada actividad, necesitarás añadir un atributo android:banner
a todas las etiquetas <activity>
de tu aplicación.
1 |
<activity
|
2 |
android:name=".MainActivity" |
3 |
android:icon="@drawable/app_icon_your_company" |
4 |
android:label="@string/app_name" |
5 |
android:logo="@drawable/app_icon_your_company" |
6 |
android:screenOrientation="landscape" > |
7 |
<intent-filter>
|
8 |
<action android:name="android.intent.action.MAIN" /> |
9 |
<category android:name="android.intent.category.LEANBACK_LAUNCHER" /> |
Éste snippet declara un lanzador de actividades para TV.
1 |
</intent-filter>
|
2 |
</activity>
|
3 |
<activity android:name=".DetailsActivity" /> |
4 |
<activity android:name=".PlaybackOverlayActivity" /> |
5 |
<activity android:name=".BrowseErrorActivity" /> |
6 |
</application>
|
7 |
</manifest>
|
5. Probando la Aplicación de Ejemplo
El próximo paso es probar como funciona tu aplicación desde la perspectiva del usuario. Aún si has accesado a una Android TV física, querrás probar tu proyecto en múltiples dispositivos, así que siempre deberás crear al menos un Android TV AVD.
Para crear tu AVD:
- Lanza el AVD Manager, ya sea dando click en el botón AVD Manager en la barra de herramientas o al seleccionar Tools>Android>AVD Manager.
- Da click en Create New Virtual Device.
- Selecciona la categoría TV.
- Elige uno de los dispositivos de Android TV enlistados y da click en Next.
- Selecciona tu imagen de sistema y da click en Next.
- Dále un nombre a tu AVD y da click en Finish.
Para probar tu proyecto de ejemplo, selecciona Run>Run app, seguido de tu TV AVD. Una vez que el AVD ha finalizado de cargar, verás la interfaz de usuario de Android TV con el banner de tu aplicación en la esquina inferior izquierda.
Para lanzar tu aplicación, da click en la imagen del banner. Después de un breve retraso, tu aplicación aparecerá en la ventana AVD.
6. Más para Explorar
Éste artículo te ha dado una introducción a Android Tv y te ha mostrado como crear una aplicación de ejemplo. Si quieres explorar más de la plataforma Android TV, puedes continuar desarrollando tu aplicación de ejemplo al consultar las siguientes áreas:
- BrowserFragment. En la aplicación de ejemplo, cada fila de contenido corresponde a una categoría. Ésta porción de la interfaz de usuario es creada con la clase
BrowseFragment
. Puedes aprender más de éste fragmento en la sección Creating a Catalog Browser (Creando un Navegador de Catálogo) de la documentación oficial de Android TV. - DetailsFragment. Da click en cualquie fragmento de código para ver más información del contenido. Para expandir ésta funcionalidad, consulta la clase
DetailsFragment
en Building a Details View (Creando una Vista Details).
- SearchFragment. A pesar del ícono de búsqueda en la esquina superior izquierda de la aplicación, la búsqueda no está funcionando en tu aplicación de ejemplo. Para hacerla funcionar necesitarás consultar la clase
SearchFragment
, de la que también puedes encontrar más información en la documentación de Android TV.
Conclusión
Ahora deberías tener una idea más clara de lo que se necesita para desarrollar una aplicación para Android TV. Hay unas advertencias a tomar en cuenta, pero desarrollar para Android TV no debe ser demasiado difícil si ya has desarrollado para Android.
¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!