Consideraciones de diseño de las aplicaciones de AIR para TV

Consideraciones sobre vídeo

Directrices de la codificación de vídeo

Cuando se transmite vídeo a un dispositivo de TV, Adobe recomienda las siguientes directrices de codificación:

Códec de vídeo:

H.264, perfil principal o alto, codificación progresiva

Resolución:

720i, 720p, 1080i o 1080p

Velocidad de fotogramas:

24 fotogramas por segundo o 30 fotogramas por segundo

Códec de audio:

AAC-LC o AC-3, 44,1 kHz, estéreo, o los siguientes códecs de audio multicanal: E-AC-3, DTS, DTS Express, DTS-HD High Resolution Audio o DTS-HD Master Audio

Velocidad de bits combinada:

Hasta 8 Mbps dependiendo del ancho de banda disponible

Velocidad de bits de audio:

Hasta 192 Kbps

Proporción de aspecto de píxeles:

1 × 1

Adobe recomienda el uso del códec H.264 para el vídeo que se transmite a dispositivos de AIR para TV.

Nota: AIR para TV también admite vídeo que se codifica con los códecs Sorenson Spark o On2 VP6. Sin embargo, el hardware no descodifica ni presenta estos códecs. Lo normal es que el motor de ejecución descodifique y presente estos códecs utilizando software y, por lo tanto, el vídeo se reproduzca con una velocidad de fotogramas mucho más baja. Por lo tanto, utilice H.264 si es posible.

Clase StageVideo

AIR para TV admite la presentación y la descodificación de hardware del vídeo codificado con H.264. Utilice la clase StageVideo para activar esta función.

Consulte Uso de la clase StageVideo para la presentación acelerada por hardware en la Guía del desarrollador de ActionScript 3.0 para obtener información sobre:

  • La API de la clase StageVideo y clases relacionadas.

  • Limitaciones del uso de la clase StageVideo.

Para una mejor compatibilidad con las aplicaciones de AIR existentes que utilicen el objeto Video para el vídeo codificado con H.264, AIR para TV utiliza de forma interna un objeto StageVideo. Esta operación implica que la reproducción de vídeo se beneficia de la presentación y la descodificación de hardware. Sin embargo, el objeto Video está sujeto a las mismas restricciones que un objeto StageVideo. Por ejemplo, si la aplicación intenta girar el vídeo, no se produce ninguna rotación, debido a que el hardware, no el motor de ejecución, está presentando el vídeo.

Sin embargo, cuando escriba nuevas aplicaciones, utilice el objeto StageVideo para el vídeo codificado con H.264.

Para ver un ejemplo del uso de la clase StageVideo, consulte Delivering video and content for the Flash Platform on TV (Transmisión de vídeo y contenido para la plataforma de Flash en TV; en inglés).

Directrices de transmisión de vídeo

En un dispositivo de AIR para TV, el ancho de banda disponible de la red puede variar durante la reproducción de vídeo. Por ejemplo, estas variaciones pueden suceder cuando otro usuario comienza a utilizar la misma conexión a Internet.

Por lo tanto, Adobe recomienda que el sistema de transmisión de vídeo utilice capacidades de velocidad de bits adaptativas. Por ejemplo, en el servidor, Flash Media Server admite capacidades de velocidad de bits adaptativas. En el cliente, puede utilizar Open Source Media Framework (OSMF).

Los siguientes protocolos están disponibles para transmitir contenido de vídeo en la red a una aplicación de AIR para TV:
  • Transmisión dinámica HTTP y HTTPS (formato F4F)

  • Transmisión RTMP, RTMPE, RTMFP, RTMPT y RTMPTE

  • Descarga progresiva HTTP y HTTPS

Para más información, consulte las referencias siguientes:

Consideraciones sobre audio

ActionScript para la reproducción de sonido no es diferente en las aplicaciones de AIR para TV respecto a otras aplicaciones de AIR. Para obtener más información, consulte Trabajo con sonido en la Guía del desarrollador de ActionScript 3.0 .

En cuanto al soporte de audio multicanal en AIR para TV, tenga en cuenta lo siguiente:

  • AIR para TV admite audio multicanal para vídeos de descarga progresiva desde un servidor HTTP. aún no se admite audio multicanal en vídeos transmitidos desde Adobe Flash Media Server.

  • Aunque AIR para TV admite muchos códecs de audio, no todos los dispositivos AIR para TV admiten todo el conjunto. Utilice el método flash.system.Capabilities hasMultiChannelAudio() para comprobar si un dispositivo AIR para TV admite un códec de audio multicanal concreto, por ejemplo, AC-3.

    Por ejemplo, considere una aplicación que descarga progresivamente un archivo de vídeo desde un servidor. El servidor tiene distintos archivos de vídeo H.264 que admiten distintos códecs de audio multicanal. La aplicación puede usar hasMultiChannelAudio() para determinar qué archivos de vídeo solicitar al servidor. Como alternativa, la aplicación puede enviar al servidor la cadena contenida en Capabilities.serverString . Esta cadena indica qué códecs de audio multicanal están disponibles y permiten al servidor seleccionar el archivo de vídeo adecuado.

  • Al usar uno de los códecs de audio DTS, pueden darse casos en los que hasMultiChannelAudio() devuelva true , pero no se reproduzca el audio DTS.

    Por ejemplo, un reproductor de Blu-ray con una salida S/PDIF, conectado a un amplificador antiguo. El amplificador antiguo no admite DTS, pero S/PDIF no tiene ningún protocolo para notificar al reproductor de Blu-ray. Si el reproductor de Blu-ray envía el flujo DTS al amplificador antiguo, el usuario no oye nada. Por lo tanto, cuando se utiliza DTS lo mejor es proporcionar una interfaz de usuario para que el usuario pueda indicar si no se está reproduciendo ningún sonido. A continuación, la aplicación puede volver a un códec diferente.

La siguiente tabla resume cuándo utiliza los diferentes códecs de audio en las aplicaciones de AIR para TV. La tabla también indica cuándo utilizan los dispositivos AIR para TV aceleradores por hardware para descodificar un códec de audio. La descodificación por hardware mejora el rendimiento y descarga la CPU.

Códec de audio

Disponibilidad en dispositivo AIR para TV

Descodificación por hardware

Cuándo utilizar este códec de audio

Más información

AAC

Siempre

Siempre

En vídeos codificados con H.264.

Para la transmisión de audio como, por ejemplo, servicio de transmisión de música por Internet.

Cuando se utilice una transmisión AAC de solo audio, encapsule la transmisión de audio en un contenedor MP4.

mp3

Siempre

No

Para sonidos en los archivos SWF de la aplicación.

En vídeos codificados con Sorenson Spark o On2 VP6.

Un vídeo H.264 que utiliza mp3 para el audio no se puede reproducir en dispositivos de AIR para TV.

AC-3 (Dolby Digital)

E-AC-3 (Enhanced Dolby Digital)

DTS Digital Surround

DTS Express

DTS-HD High Resolution Audio

DTS-HD Master Audio

Comprobar

En vídeos codificados con H.264.

Normalmente, AIR para TV transfiere un flujo de audio multicanal a un receptor de audio/vídeo externo que descodifica y reproduce el audio.

Speex

Siempre

No

Recepción de una transmisión de voz en vivo.

Un vídeo H.264 que utiliza Speex para el audio no se puede reproducir en dispositivos de AIR para TV. Utilice Speex solamente con vídeos codificados con Sorenson Spark o On2 VP6.

NellyMoser

Siempre

No

Recepción de una transmisión de voz en vivo.

Un vídeo H.264 que utiliza NellyMoser para el audio no se puede reproducir en dispositivos de AIR para TV. Utilice NellyMoser solamente con vídeos codificados con Sorenson Spark o con On2 VP6.

Nota: algunos archivos de vídeo contienen dos flujos de audio. Por ejemplo, un archivo de vídeo puede contener un flujo AAC y uno AC3. AIR para TV no admite estos archivos de vídeo y si se utilizan, el resultado será ausencia de vídeo y sonido.

Aceleración de hardware de gráficos

Uso de la aceleración de gráficos de hardware

Los dispositivos de AIR para TV proporcionan aceleración de hardware para las operaciones de gráficos 2D. Los aceleradores de gráficos de hardware del dispositivo descargan la CPU para realizar las siguientes operaciones:

  • Procesamiento de mapa de bits

  • Escala de mapa de bits

  • Fusión de mapa de bits

  • Relleno de rectángulo sólido

Esta aceleración de gráficos de hardware implica que diversas operaciones gráficas en una aplicación de AIR para TV pueden tener un rendimiento alto. Entre algunas de estas operaciones se incluyen:

  • Transiciones de deslizamiento

  • Transiciones de escala

  • Aparición y desaparición de imágenes

  • Composición de varias imágenes con alfa

Para obtener las ventajas de rendimiento de la aceleración de gráficos de hardware para estos tipos de operaciones, utilice una de las siguientes técnicas:

  • Establezca la propiedad cacheAsBitmap en true en los objetos MovieClip y otros objetos de visualización que presenten contenido inalterable en su mayoría. A continuación, realice transiciones de deslizamiento, transiciones de aparición o desaparición progresiva y mezcla alfa en estos objetos.

  • Utilice la propiedad cacheAsBitmapMatrix en los objetos de visualización si desea escalar o trasladar (aplicar cambio de posición x e y).

    Con el uso de las operaciones de la clase Matrix para la escala y la traslación, los aceleradores de hardware del dispositivo realizan las operaciones. Como alternativa, se debe tener en cuenta el escenario donde se cambian las dimensiones de un objeto de visualización que tiene su propiedad cacheAsBitmap establecida en true . Cuando cambian las dimensiones, el software del motor de ejecución vuelve a dibujar el mapa de bits. Al volver a dibujar con software se obtiene un rendimiento más bajo que al escalar con la aceleración de hardware utilizando una operación Matrix.

    Por ejemplo, considere una aplicación que muestra una imagen que se expande cuando el usuario la selecciona. Utilice la operación de escala Matrix varias veces para dar la sensación de la expansión de la imagen. Sin embargo, dependiendo del tamaño de la imagen final y la imagen original, la calidad de la imagen final puede ser inaceptable. Por lo tanto, restablezca las dimensiones del objeto de visualización una vez completadas las operaciones de expansión. Debido a que cacheAsBitmap es true , el software del motor de ejecución vuelve a dibujar el objeto de visualización, pero solo una vez, y representa una imagen de alta calidad.

    Nota: generalmente, los dispositivos de AIR para TV no admiten el sesgo y la rotación acelerados con hardware. Por lo tanto, si se especifica el sesgo y la rotación en la clase Matrix, AIR para TV realiza todas las operaciones Matrix en el software. Estas operaciones de software pueden tener un impacto perjudicial en el rendimiento.
  • Use la clase BitmapData para crear un comportamiento personalizado de almacenamiento en caché de mapas de bits.

Para obtener más información sobre el almacenamiento en caché de mapa de bits, consulte lo siguiente:

Administración de memoria gráfica

Para llevar a cabo las operaciones de gráficos acelerados, los aceleradores de hardware utilizan memoria gráfica especial. Si la aplicación utiliza toda la memoria gráfica, la aplicación se ejecuta con más lentitud, ya que AIR para TV vuelve a utilizar el software para las operaciones de gráficos.

Para administrar el uso de memoria gráfica de la aplicación:

  • Cuando se termine de utilizar una imagen u otros datos de mapa de bits, libere su memoria gráfica asociada. Para ello, llame al método dispose() de la propiedad bitmapData del objeto Bitmap. Por ejemplo:

    myBitmap.bitmapData.dispose();
    Nota: al liberar la referencia al objeto BitmapData no se libera inmediatamente la memoria gráfica. El recopilador de elementos no utilizados del motor de ejecución libera finalmente la memoria gráfica, pero la llamada a dispose() da a la aplicación más control.
  • Utilice PerfMaster Deluxe, una aplicación de AIR que proporciona Adobe para comprender mejor la aceleración de gráficos de hardware en el dispositivo de destino. Esta aplicación muestra los fotogramas por segundo para ejecutar distintas operaciones. Utilice PerfMaster Deluxe para comparar diferentes implementaciones de la misma operación. Por ejemplo, compare el movimiento de una imagen de mapa de bits frente al movimiento de una imagen vectorial. PerfMaster Deluxe se encuentra disponible en Flash Platform for TV .

Administración de la lista de visualización

Para que un objeto de visualización permanezca invisible, establezca la propiedad visible del objeto en false . El objeto seguirá en la lista de visualización pero AIR para TV no lo procesará ni lo visualizará. Esta técnica resulta útil para objetos que suelen aparecer y desaparecer de la vista, ya que solamente añade un poco de carga de procesamiento. Sin embargo, establecer la propiedad visible como false no libera recursos de objeto en absoluto. Por lo tanto, cuando se ha terminado de visualizar un objeto, o al menos no se va a visualizar durante un periodo prolongado, se recomienda quitar el objeto de la lista de visualización. Asimismo, se recomienda definir todas las referencias al objeto como null . Estas acciones permiten al recopilador de elementos no utilizados liberar recursos del objeto.

Uso de imágenes PNG y JPEG

Dos formatos de imagen comunes en las aplicaciones son PNG y JPEG. En relación a estos formatos de imagen en las aplicaciones de AIR para TV, se debe tener en cuenta lo siguiente:

  • AIR para TV suele utilizar la aceleración de hardware para descodificar archivos JPEG.

  • AIR para TV suele emplear software para descodificar archivos PNG. La descodificación de archivos PNG en software es rápida.

  • PNG es el único formato de mapa de bits que se utiliza en plataformas distintas y que admite transparencias (un canal alfa).

Por lo tanto, utilice estos formatos de imagen tal y como se indica en las aplicaciones:

  • Utilice archivos JPEG para las fotografías para aprovechar la descodificación acelerada de hardware.

  • Utilice archivos de imagen PNG para los elementos de la interfaz de usuario. Los elementos de la interfaz de usuario pueden tener una configuración alfa y la descodificación de software proporciona un rendimiento suficientemente rápido para los elementos de la interfaz de usuario.

Escenario en las aplicaciones de AIR para TV

Cuando se crea una aplicación de AIR para TV, se debe tener en cuenta lo siguiente al trabajar con la clase Stage:

  • Resolución de pantalla

  • Área de visualización segura

  • Modo de escala del escenario

  • Alineación del escenario

  • Estad de visualización del escenario

  • Diseño para varios tamaños de pantalla

  • Configuración de calidad del escenario

Resolución de pantalla

Actualmente, los dispositivos de TV suelen tener una de las siguientes resoluciones de pantalla: 540p, 720p y 1080p. Estas resoluciones presentan los siguientes valores en la clase Capabilities de ActionScript:

Resolución de pantalla

Capabilities.screenResolutionX

Capabilities.screenResolutionY

540p

960

540

720p

1280

720

1080p

1920

1080

Para escribir una aplicación de AIR para TV de pantalla completa para un dispositivo específico, codifique Stage.stageWidth y Stage.stageHeight en la resolución de pantalla del dispositivo. Sin embargo, para escribir una aplicación de pantalla completa que se ejecute en varios dispositivos, utilice las propiedades Capabilities.screenResolutionX y Capabilities.screenResolutionY para definir las dimensiones del escenario.

Por ejemplo:

stage.stageWidth = Capabilities.screenResolutionX; 
stage.stageHeight = Capabilities.screenResolutionY;

Área de visualización segura

El área de visualización segura de una televisión es un área de la pantalla que está insertada desde los bordes de la pantalla. Esta área está insertada en una posición lo suficientemente lejos para que el usuario final pueda verla en su totalidad, sin que el bisel de la TV oscurezca ninguna parte del área. Debido a que el bisel, que es el marco físico alrededor de la pantalla, varía según el fabricante, la inserción necesaria también varía. El área de visualización segura intenta garantizar el área de la pantalla que se encuentra visible. El área de visualización segura también se denomina área segura de título .

La sobreexploración es el área de la pantalla que no está visible porque se encuentra detrás del bisel.

Adobe recomienda una inserción del 7,5% en cada borde de la pantalla. Por ejemplo:

Ver gráfico a tamaño completo
Área de visualización segura para una resolución de pantalla de 1920 x 1080

El área de visualización segura siempre se debe tener en cuenta al diseñar una aplicación de AIR para TV de pantalla completa:

  • Utilice toda la pantalla para los fondos como, por ejemplo, colores o imágenes de fondo.

  • Use únicamente el área de visualización segura para elementos fundamentales de la aplicación como, por ejemplo, texto, gráficos, vídeo y elementos de la interfaz de usuario como, por ejemplo, botones.

En la siguiente tabla se muestran las dimensiones del área de visualización segura para cada una de las resoluciones típicas de pantalla, utilizando una inserción del 7,5%.

Resolución de pantalla

Anchura y altura del área de visualización segura

Anchura de la inserción izquierda y derecha

Altura de la inserción superior e inferior

960 x 540

816 x 460

72

40

1280 x 720

1088 x 612

96

54

1920 x 1080

1632 x 918

144

81

Sin embargo, una práctica mejor consiste en calcular siempre dinámicamente el área de visualización segura. Por ejemplo:

var horizontalInset, verticalInset, safeAreaWidth, safeAreaHeight:int; 
 
horizontalInset = .075 * Capabilities.screenResolutionX; 
verticalInset = .075 * Capabilities.screenResolutionY; 
safeAreaWidth = Capabilities.screenResolutionX - (2 * horizontalInset); 
safeAreaHeight = Capabilities.screenResolutionY - (2 * verticalInset);

Modo de escala del escenario

Establezca Stage.scaleMode en StageScaleMode.NO_SCALE , y detecte los eventos de cambio de tamaño del escenario.

stage.scaleMode = StageScaleMode.NO_SCALE; 
stage.addEventListener(Event.RESIZE, layoutHandler);

Esta configuración hace que las coordenadas del escenario sean las mismas que las coordenadas de píxel. Junto con el estado de visualización FULL_SCREEN_INTERACTIVE y la alineación del escenario TOP_LEFT , esta configuración permite utilizar con eficacia el área de visualización segura.

Concretamente, en las aplicaciones de pantalla completa, este modo de escala significa que las propiedades stageWidth y stageHeight de la clase Stage se corresponden con las propiedades screenResolutionX y screenResolutionY de la clase Capabilities.

Asimismo, cuando la ventana de la aplicación cambia de tamaño, el contenido del escenario conserva su tamaño definido. El motor de ejecución no realiza escala ni diseño automáticos. Asimismo, el motor de ejecución distribuye el evento resize de la clase Stage cuando la ventana cambia el tamaño. Por lo tanto, se tiene el control total sobre cómo ajustar el contenido de la aplicación cuando esta comienza y cuando la ventana de la aplicación cambia de tamaño.

Nota: el comportamiento de NO_SCALE es el mismo que con cualquier aplicación de AIR. Sin embargo, en las aplicaciones de AIR para TV, el uso de esta configuración resulta fundamental en el uso del área de visualización segura.

Alineación del escenario

Establezca Stage.align en StageAlign.TOP_LEFT :

stage.align = StageAlign.TOP_LEFT; 

Esta alineación sitúa la coordenada 0,0 en la esquina superior izquierda de la pantalla, lo que resulta adecuado para la colocación de contenido con el uso de ActionScript.

Junto con el modo de escala NO_SCALE y el estado de visualización FULL_SCREEN_INTERACTIVE , esta configuración permite utilizar de forma eficaz el área de visualización segura.

Estado de visualización del escenario

Establezca Stage.displayState en una aplicación de AIR for TV de pantalla completa en StageDisplayState.FULL_SCREEN_INTERACTIVE :

stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 

Este valor configura la aplicación de AIR para que expanda el escenario a toda la pantalla del usuario con la entrada de usuario activada.

Adobe recomienda el uso del valor FULL_SCREEN_INTERACTIVE . Junto con el modo de escala NO_SCALE y la alineación del escenario TOP_LEFT , esta configuración permite utilizar de forma eficaz el área de visualización segura.

Por lo tanto, para las aplicaciones de pantalla completa, en un controlador para el evento ADDED_TO_STAGE en la clase de documento principal, realice lo siguiente:

private function onStage(evt:Event):void 
{ 
    stage.scaleMode = StageScaleMode.NO_SCALE; 
    stage.align = StageAlign.TOP_LEFT; 
    stage.addEventListener(Event.RESIZE, onResize); 
    stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 
}

Posteriormente, en el controlador para el evento RESIZE :

  • Compare los tamaños de resolución de pantalla con la anchura y la altura del escenario. Si son los mismos, el evento RESIZE se ha generado, ya que el estado de visualización del escenario cambió a FULL_SCREEN_INTERACTIVE .

  • Calcule y guarde las dimensiones del área de visualización segura y las inserciones correspondientes.

private function onResize(evt:Event):void 
{ 
    if ((Capabilities.screenResolutionX == stage.stageWidth) && 
        (Capabilities.screenResolutionY == stage.stageHeight)) 
    { 
         
        // Calculate and save safe viewing area dimensions. 
    } 
}

Cuando las dimensiones del escenario coinciden con Capabilities.screenResolutionX y screenResolutionY , AIR para TV hace que el hardware entregue la mejor fidelidad posible para el vídeo y los gráficos.

Nota: la fidelidad con la que se visualizan los gráficos y el vídeo en una pantalla de TV puede no coincidir con los valores de Capabilities.screenResolutionX screenResolutionY , que a su vez dependen del dispositivo en el que se ejecute AIR para TV. Por ejemplo, una grabadora de vídeo digital que ejecute AIR para TV puede tener una resolución de pantalla de 1280 x 720 y el TV conectado puede tener una resolución de pantalla de 1920 x 1080. No obstante, AIR para TV hace que el hardware entregue la mejor fidelidad posible. Por lo tanto, en este ejemplo, el hardware mostrará un vídeo de 1080p con resolución de pantalla de 1920 x 1080.

Diseño para varios tamaños de pantalla

Es posible desarrollar la misma aplicación de AIR para TV de pantalla completa para que funcione y presente un buen aspecto en varios dispositivos de AIR para TV. Realice lo siguiente:

  1. Establezca la propiedades del escenario scaleMode , align y displayState en los valores recomendados: StageScaleMode.NO_SCALE , StageAlign.TOP_LEFT y StageDisplayState.FULL_SCREEN_INTERACTIVE , respectivamente.

  2. Configure el área de visualización segunda en función de Capabilities.screenResolutionX y Capabilities.screenResolutionY .

  3. Ajuste el tamaño y el diseño del contenido en función de la anchura y la altura del área de visualización segura.

    Aunque los objetos del contenido son grandes, especialmente en comparación con las aplicaciones de dispositivo móvil, los conceptos como diseño dinámico, posicionamiento relativo y contenido adaptativo son los mismos. Para obtener más información sobre ActionScript para admitir estos conceptos, consulte Authoring mobile Flash content for multiple screen sizes (Creación de contenido móvil de Flash para varios tamaños de pantalla; en inglés).

Calidad del escenario

La propiedad Stage.quality de una aplicación de AIR para TV siempre es StageQuality.High . No se puede cambiar.

Esta propiedad especifica la calidad de representación para todos los objetos Stage.

Administración de la entrada de control remoto

Los usuarios suelen interactuar con la aplicación de AIR para TV utilizando un mando a distancia. Sin embargo, gestione la introducción mediante teclas del mismo modo que en el teclado de una aplicación de escritorio. Concretamente, administre el evento KeyboardEvent.KEY_DOWN . Para obtener más información, consulte Captura de entradas de teclado en la Guía del desarrollador de ActionScript 3.0 .

Las teclas del mando a distancia se asignan a constantes de ActionScript. Por ejemplo, las teclas del teclado direccional de un mando a distancia se asignan de la siguiente manera:

Tecla del teclado direccional del mando a distancia

Constante de ActionScript 3.0

Arriba

Keyboard.UP

Abajo

Keyboard.DOWN

Izquierda

Keyboard.LEFT

Derecha

Keyboard.RIGHT

Aceptar o Seleccionar

Keyboard.ENTER

AIR 2.5 ha añadido muchas otras constantes de teclado para admitir la introducción mediante mando a distancia. Para obtener una lista completa, consulte la clase Keyboard en Referencia de ActionScript 3.0 para la plataforma de Adobe Flash .

Para garantizar que la aplicación funcione en tantos dispositivos como sea posible, Adobe recomienda lo siguiente:

  • Utilice solo teclas de teclado direccional, si es posible.

    Los diferentes dispositivos de mando a distancia presentan conjuntos distintos de teclas. Sin embargo, siempre suelen presentar teclas de teclado direccional.

    Por ejemplo, un mando a distancia para un reproductor Blu-ray no suele tener una tecla de “canal posterior” y “canal anterior”. Incluso las teclas para reproducción, pausa y detenimiento no se encuentran en todos los controles remotos.

  • Utilice las teclas de información y de menú si la aplicación necesita varias teclas de teclado direccional.

    Las teclas de información y menú son las siguientes teclas más comunes de los controles remotos.

  • Tenga en cuenta el uso frecuente de los controles remotos universales.

    Aunque se esté creando una aplicación para un dispositivo concreto, se debe tener en cuenta que muchos usuarios no utilizan el mando a distancia que acompaña al dispositivo. En su lugar, utilizan un mando a distancia universal. Asimismo, los usuarios no siempre programan el mando a distancia universal para que coincida con todas las teclas del control remoto del dispositivo. Por lo tanto, se recomienda el uso únicamente de las teclas más comunes.

  • Asegúrese de que el usuario siempre solucione una situación utilizando una de las teclas del teclado direccional.

    En ocasiones la aplicación tiene un buen motivo para utilizar una tecla que no es de las más comunes en los mandos a distancia. Si se proporciona una ruta de escape con una de las teclas del teclado direccional, la aplicación se comportará de forma más eficaz en todos los dispositivos.

  • No requiere entrada de puntero a no ser que sepa que el dispositivo de AIR para TV de destino tiene funcionalidad de entrada de puntero.

    Aunque muchas aplicaciones de escritorio esperan la entrada del ratón, la mayoría de televisores no admiten entrada de puntero. Por lo tanto, si va a convertir aplicaciones de escritorio para ejecutarse en televisiones, asegúrese de modificar que la aplicación no espere la introducción con ratón. Estas modificaciones incluyen cambios en el control de eventos y cambios en las instrucciones para el usuario. Por ejemplo, cuando aparezca la pantalla de inicio de una aplicación, no muestre ningún texto que indique “Haga clic para comenzar”.

Administración de la selección

Si un elemento de la interfaz de usuario se centra en una aplicación de escritorio, se trata del destino de los eventos de introducción por parte del usuario como, por ejemplo, eventos de teclado y ratón. Asimismo, una aplicación resalta el elemento de la interfaz de usuario con la selección. La administración de la selección en una aplicación de AIR para TV es distinta a la administración en una aplicación de escritorio debido a lo siguiente:

  • Las aplicaciones de escritorio suelen utilizar la tecla de tabulación para cambiar la selección al siguiente elemento de la interfaz de usuario. El uso de la tecla de tabulación no se aplica a las aplicaciones de AIR para TV. Los dispositivos de control remoto no suelen disponer de tecla de tabulación. Por lo tanto, la administración de la selección con la propiedad tabEnabled de un elemento DisplayObject como en el escritorio no es adecuada.

  • Las aplicaciones de escritorio esperan que el usuario utilice el ratón para seleccionar un elemento de la interfaz de usuario.

Por lo tanto, en la aplicación, realice lo siguiente:

  • Añada un detector de eventos al objeto Stage que detecte eventos de teclado como, por ejemplo, KeyboardEvent.KEY_DOWN .

  • Proporcione una lógica de la aplicación para determinar qué elemento de la interfaz de usuario destacar para el usuario final. Asegúrese de destacar un elemento de la interfaz cuando se inicie la aplicación.

  • En función de la lógica de la aplicación, distribuya un evento Keyboard que Stage reciba en el objeto del elemento de la interfaz de usuario adecuado.

    Stage.focus o Stage.assignFocus() también se pueden utilizar para asignar el enfoque a un elemento de la interfaz de usuario. Posteriormente se puede añadir un detector de eventos a DisplayObject para que reciba los eventos de teclado.

Diseño de la interfaz de usuario

Asegúrese de que la interfaz de usuario de la aplicación de AIR para TV funcione bien en las televisiones con la incorporación de estas recomendaciones respecto a los siguientes aspectos:

  • Nivel de respuesta de la aplicación.

  • Posibilidades de uso de la aplicación.

  • Expectativas y personalidad del usuario.

Nivel de respuesta

Utilice las siguientes sugerencias para que las aplicaciones de AIR para TV presenten el máximo nivel de respuesta.

  • Cree el archivo SWF inicial de la aplicación lo más pequeño posible.

    En el archivo SWF inicial, cargue solamente los recursos necesarios para iniciar la aplicación. Por ejemplo, cargue solo la imagen de la pantalla de inicio de la aplicación.

    Aunque esta recomendación es válida para las aplicaciones de AIR de escritorio, es más importante en los dispositivos de AIR para TV. Por ejemplo, los dispositivos de AIR para TV no presentan la potencia de procesamiento equivalente de los equipos de escritorio. Asimismo, almacenan la aplicación en la memoria flash, a la que no es tan fácil de acceder como en los discos duros de los equipos de escritorio.

  • Haga que la aplicación se ejecute con una velocidad de fotogramas de al menos 20 fotogramas por segundo.

    Diseñe los gráficos para que logren este objetivo. La complejidad de las operaciones de los gráficos puede afectar a los fotogramas por segundo. Parar obtener sugerencias sobre la mejora del rendimiento de la representación, consulte Optimización del rendimiento para la plataforma de Flash .

    Nota: el hardware de gráficos en los dispositivos de AIR para TV suele actualizar la pantalla a una velocidad de 60 Hz o 120 Hz (60 o 120 veces por segundo). El hardware examina el escenario para buscar actualizaciones a, por ejemplo, 30 fotogramas por segundo o a 60 fotogramas por segundo para la visualización en la pantalla a 60-Hz o 120-Hz. Sin embargo, el que el usuario cuente con estas velocidades de fotogramas depende de la complejidad de las operaciones gráficas de la aplicación.
  • Actualice la pantalla en 100 - 200 milisegundos de introducción por parte del usuario.

    Los usuarios se impacientan si las actualizaciones tardan mucho, lo que implica varias pulsaciones de teclas.

Posibilidades de uso

Los usuarios de las aplicaciones de AIR para TV se encuentran en un entorno de “sala de estar”. Se encuentran sentados frente al televisor a una distancia de unos 3 metros. La habitación se encuentra a veces a oscuras. Se suele utilizar un mando a distancia. Varias personas pueden utilizar la aplicación, unas veces de forma conjunta y otras veces una persona cada vez.

Por lo tanto, para diseñar la interfaz de usuario para distintas posibilidades de uso en una TV, se debe tener en cuenta lo siguiente:

  • Los elementos de la interfaz de usuario deben ser amplios.

    Al diseñar el texto, los botones y cualquier otro elemento de la interfaz de usuario, se debe tener en cuenta que el usuario está sentado en la sala. Haga que todo sea fácil de ver y de leer a una distancia de, por ejemplo, unos 3 metros. No llene en exceso la pantalla porque esta sea amplia.

  • Utilice un buen contraste para que el contenido se pueda ver y leer con facilidad en la sala.

  • Facilite la localización de los elementos necesarios de la interfaz de usuario destacándolos.

  • Utilice el movimiento solo si es necesario. Por ejemplo, el desplazamiento de una pantalla a la siguiente para una continuidad puede resultar adecuado. Sin embargo, el movimiento puede desconcertar si no ayuda al usuario a desplazarse o no es natural para la aplicación.

  • Ofrezca siempre una forma evidente y sencilla para el usuario para que se desplace por la interfaz.

Para obtener más información sobre el uso del mando a distancia, consulte Administración de la entrada de control remoto .

Expectativas y personalidad del usuario

Se debe tener en cuenta que los usuarios de aplicaciones de AIR para TV suelen buscar entretenimiento de calidad en TV en un entorno divertido y relajado. No necesariamente deben tener conocimientos sobre informática o tecnología.

Por lo tanto, diseñe las aplicaciones de AIR para TV con las siguientes características:

  • No emplee términos técnicos.

  • Evite los diálogos modales.

  • Utilice instrucciones informales y amables que sean adecuadas para su aplicación en casa y no para un entorno técnico o de trabajo.

  • Use gráficos que tengan la calidad de producción elevada que esperan los espectadores de TV.

  • Cree una interfaz de usuario que funcione fácilmente con un dispositivo de control remoto. No utilice interfaces de usuario o elementos de diseño que se ajusten mejor a una aplicación de escritorio o para móvil. Por ejemplo, las interfaces de usuario de dispositivos de escritorio y móviles suelen incluir botones de puntero y clic que necesitan un ratón o un dedo.

Fuentes y texto

Puede utilizar fuentes de dispositivo o fuentes incorporadas en la aplicación de AIR para TV.

Las fuentes de dispositivo se encuentran instaladas en un dispositivo. Todos los dispositivos de AIR para TV cuentan con las siguientes fuentes:

Nombre de la fuente

Descripción

_sans

La fuente de dispositivo _sans es un tipo de letra sans-serif. Fuente de dispositivo _sans Instalada en todos los dispositivos de AIR para TV es Myriad Pro. Normalmente, el tipo sans-serif tiene mejor aspecto en un televisor que los tipos serif, debido a la distancia de visualización.

_serif

La fuente de dispositivo _serif es un tipo de letra serif. La fuente de dispositivo _serif instalada en todos los dispositivos de AIR para TV es Minion Pro.

_typewriter

La fuente de dispositivo _typewriter es una fuente monospace. La fuente de dispositivo _typewriter instalada en todos los dispositivos de AIR para TV es Courier Std.

Todos los dispositivos de AIR para TV también cuenta con las siguientes fuentes de dispositivo asiáticas:

Nombre de la fuente

Idioma

Categoría de tipo de letra

Código de configuración regional

RyoGothicPlusN-Regular

Japonés

sans

ja

RyoTextPlusN-Regular

Japonés

serif

ja

AdobeGothicStd-Light

Coreano

sans

ko

AdobeHeitiStd-Regular

Chino simplificado

sans

zh_CN

AdobeSongStd-Light

Chino simplificado

serif

zh_CN

AdobeMingStd-Light

Chino tradicional

serif

zh_TW and zh_HK

Las fuentes de dispositivo de AIR para TV:

  • Proceden de la biblioteca de tipos Adobe® Type Library.

  • Presentan un buen aspecto en televisión.

  • Están diseñadas para los títulos de vídeo.

  • Son contornos de fuente, no fuentes de mapa de bits.

Nota: los fabricantes suelen incluir otras fuentes en el dispositivo. Estas fuentes del dispositivo proporcionadas por los fabricantes se encuentran instaladas además de las fuentes del dispositivo de AIR para TV.

Adobe proporciona una aplicación denominada FontMaster Deluxe que muestra todas las fuentes de dispositivo en el propio dispositivo. La aplicación se encuentra disponible en Flash Platform for TV .

También se pueden incorporar fuentes a la aplicación de AIR for TV. Para obtener información sobre las fuentes incorporadas, consulte Representación avanzada de texto en la Guía del desarrollador de ActionScript 3.0 .

Adobe recomienda lo siguiente en relación al uso de campos de texto TLF:

  • Utilice los campos de texto TLF para el texto de idiomas asiáticos para aprovechar la configuración local en la que se ejecuta la aplicación. Establezca la propiedad locale del objeto TextLayoutFormat asociado con el objeto TLFTextField. Para determinar la configuración local actual, consulte Elección de una configuración regional en la Guía del desarrollador de ActionScript 3.0 .

  • Especifique el nombre de la fuente en la propiedad fontFamily en el objeto TextLayoutFormat si la fuente no es una de las fuentes del dispositivo de AIR para TV. AIR para TV utiliza la fuente si esta se encuentra disponible en el dispositivo. Si la fuente solicitada no está en el dispositivo, en función de la configuración regional , AIR para TV sustituye la fuente del dispositivo adecuada de AIR para TV.

  • Especifique _sans , _serif o _typewriter para la propiedad fontFamily , junto con la propiedad locale para que AIR para TV seleccione la fuente de dispositivo correcta. Dependiendo de la configuración regional, AIR para TV realiza la selección de su conjunto de fuentes de dispositivo asiáticas o su conjunto de fuentes de dispositivo no asiáticas. Estos valores proporciona una forma sencilla de utilizar automáticamente la fuente correcta para las cuatro configuraciones regionales asiáticas principales e inglés.

Nota: si se utilizan los campos de texto clásicos para texto de idioma asiático, especifique un nombre de fuente de un dispositivo de AIR para TV para garantizar la representación adecuada. Si sabe que otra fuente se encuentra instalada en el dispositivo de destino, también puede especificarla.

Respecto al rendimiento de la aplicación, se debe tener en cuenta lo siguiente:

  • Los campos de texto clásicos ofrecen un rendimiento más rápido que los campos de texto TLF.

  • Un campo de texto clásico que utiliza fuentes de mapas de bits proporciona el rendimiento más rápido.

    Las fuentes de mapas de bits proporciona un mapa de bits para cada carácter, a diferencia de las fuentes de contorno, que proporcionan los datos de contorno sobre cada carácter. Tanto las fuentes de dispositivo como las incorporadas pueden ser fuentes de mapa de bits.

  • Si se especifica una fuente de dispositivo, asegúrese de que la fuente se encuentra instalada en el dispositivo de destino. Si no está instalada en el dispositivo, AIR para TV busca y utiliza otra fuente que se encuentre instalada en el dispositivo. Sin embargo, este comportamiento ralentiza el rendimiento de la aplicación.

  • Tal y como sucede con cualquier objeto de visualización, si un objeto TextField no suele modificarse, establezca la propiedad cacheAsBitmap del objeto en true . Esta configuración mejora el rendimiento de las transiciones como, por ejemplo, aparición y desaparición gradual, deslizamiento y mezcla alfa. Utilice cacheAsBitmapMatrix para la escala y traslación. Para obtener más información, consulte Aceleración de hardware de gráficos .

Seguridad del sistema de archivos

Las aplicaciones de AIR para TV son aplicaciones de AIR y, por lo tanto, pueden acceder al sistema de archivos del dispositivo. Sin embargo, en un dispositivo de “sala de estar” resulta sumamente importante que una aplicación no pueda acceder a los archivos del sistema del dispositivo o a los archivos de otras aplicaciones. Los usuarios de TV y de los dispositivos asociados no esperan ni toleran ningún fallo de dispositivo: después de todo, están viendo la televisión.

Por lo tanto, una aplicación de AIR para TV cuenta con una vista limitada del sistema de archivos del dispositivo. Al utilizar ActionScript 3.0, la aplicación solo puede acceder a directorios específicos (y a sus subdirectorios). Asimismo, los nombres del directorio que se utilizan en ActionScript no son los reales del dispositivo. Esta capa adicional protege las aplicaciones de AIR para TV frente al acceso inadvertido o malintencionado a los archivos locales que no les pertenecen.

Para obtener formación, consulte Directory view for AIR for TV applications (Vista del directorio para las aplicaciones de AIR for TV; en inglés).

Entorno limitado de la aplicación de AIR

Las aplicaciones de AIR for TV se ejecutan en el entorno limitado de la aplicación de AIR, descrito en The AIR application sandbox (Entorno limitado de la aplicación de AIR; en inglés).

La única diferencia para las aplicaciones de AIR para TV es que tienen acceso limitado al sistema de archivos, tal y como se describe en Seguridad del sistema de archivos .

Ciclo de vida de la aplicación

A diferencia del entorno de escritorio, el usuario final no puede cerrar la ventana en la que se ejecuta la aplicación de AIR para TV. Por lo tanto, proporcione un mecanismo de interfaz de usuario para salir de la aplicación.

Generalmente, un dispositivo permite que el usuario final salga en cualquier momento de una aplicación con la tecla de salir del mando a distancia. Sin embargo, AIR para TV no distribuye el evento flash.events.Event.EXITING en la aplicación. Por lo tanto, guarde el estado de la aplicación con frecuencia de modo que la aplicación se pueda restaurar a un estado razonable cuando se vuelva a iniciar.

Cookies HTTP

AIR para TV admite cookies HTTP persistentes y cookies de sesión. AIR para TV guarda las cookies de cada aplicación de AIR en un directorio específico de la aplicación:

/app-storage/<app id>/Local Store

El archivo de cookie se llama cookies .

Nota: AIR en otros dispositivos, por ejemplo dispositivos de escritorio, no almacena las cookies de forma separada para cada aplicación. El almacenamiento de cookies específicas de cada aplicación admite el modelo de seguridad de aplicación y sistema de AIR para TV.

Utilice la propiedad URLRequest.manageCookies de ActionScript del siguiente modo:

  • Establezca manageCookies en true . Este es el valor predeterminado. Significa que AIR para TV añade automáticamente las cookies a las solicitudes HTTP y recuerda las cookies en la respuesta de HTTP.

    Nota: aunque manageCookies sea true , la aplicación puede añadir manualmente una cookie a una solicitud HTTP utilizando URLRequest.requestHeaders . Si esta cookie tiene el mismo nombre que una cookie que está administrando AIR para TV, la solicitud contiene dos cookies con el mismo nombre. Los valores de las dos cookies pueden ser diferentes.
  • Establezca manageCookies en false . Este valor significa que la aplicación es responsable de enviar cookies en las solicitudes HTTP y de recordar las cookies en la respuesta HTTP.

Para obtener más información, consulte URLRequest .