Considerações a respeito de vídeo
Diretrizes de codificação de vídeo
Ao transmitir vídeo para um aparelho de TV, a Adobe recomenda respeitar as seguintes diretrizes:
Codec de vídeo:
|
H.264, perfil Principal ou Alto, codificação progressiva
|
Resolução:
|
720i, 720p, 1080i ou 1080p
|
Taxa de quadros:
|
24 quadros por segundo ou 30 quadros por segundo
|
Codec de áudio:
|
O AAC-LC ou o AC-3, o 44.1 kHz, estéreo ou estes codecs de áudio multicanal: E-AC-3, DTS, DTS Express, DTS-HD High Resolution Audio ou DTS-HD Master Audio
|
Taxa de bit composta:
|
até 8M bps, dependendo da largura de banda disponível
|
Taxa de bit de áudio:
|
até 192 Kbps
|
Proporção de pixels:
|
1 × 1
|
A Adobe recomenda usar o codec H.264 para vídeo entregue a dispositivos AIR for TV.
Nota:
O AIR for TV também suporta vídeo codificado com Sorenson Spark ou codecs On2 VP6. No entanto, o hardware não decodifica nem apresenta esses codecs. Em vez disso, o runtime decodifica esses codecs usando o software; portanto, o vídeo é exibido com uma taxa de quadros muito menor. Por isso, use o H.264 se for possível.
A classe StageVideo
O AIR for TV suporta decodificação e apresentação de hardware de vídeo H.264 codificado. Use a classe StageVideo para habilitar esse recurso.
Consulte
Uso da classe StageVideo para apresentação acelerada por hardware
no
Guia do desenvolvedor do ActionScript 3.0
para obter detalhes sobre:
Para um melhor suporte aos aplicativos AIR existentes que usam o objeto Video para vídeo H.264 codificado, o AIR for TV usa um objeto StageVideo
internamente
. Fazer isso significa que a reprodução de vídeo tira proveito da decodificação e da apresentação do hardware. No entanto, o objeto Video está sujeito às mesmas restrições de um objeto StageVideo. Por exemplo, se o aplicativo tentar girar o vídeo, nenhum giro ocorrerá, uma vez que o hardware, não o runtime, estará apresentando o vídeo.
Contudo, ao escrever novos aplicativos, use o objeto StageVideo para vídeo H.264 codificado.
Para obter um exemplo do uso da classe StageVideo, consulte
Fornecendo vídeo e conteúdo para a Plataforma Flash em TV
.
Diretrizes de fornecimento de vídeo
Em um dispositivo AIR for TV, a largura de banda disponível da rede pode variar durante a reprodução de vídeo. Essas variações podem ocorrer, por exemplo, quando outro usuário começa a usar a mesma conexão com a Internet.
Portanto, a Adobe recomenda que o seu sistema de fornecimento de vídeo use capacidades de taxa de bits adaptáveis. Por exemplo, no lado do servidor, o Flash Media Server suporta capacidades de taxa de bits adaptáveis. No lado do cliente, você pode usar a estrutura de mídia de fonte aberta Open Source Media Framework (OSMF).
Os seguintes protocolos estão disponíveis para o fornecimento de conteúdo de vídeo em uma rede para um aplicativo do AIR for TV:
-
Transmissão Dinâmica em HTTP e HTTPS (formato F4F)
-
Transmissão em RTMP, RTMPE, RTMFP, RTMPT e RTMPTE
-
Download Progressivo em HTTP e HTTPS
Para obter mais informações, consulte o seguinte:
Considerações a respeito de áudio
O ActionScript para reprodução de som não é diferente nos aplicativos AIR for TV em comparação com outros aplicativos AIR. Para mais informações, consulte
Trabalho com som
no
Guia do desenvolvedor do ActionScript 3.0
.
Quanto ao suporte de áudio multicanal no AIR for TV, considere o seguinte:
-
O AIR for TV suporta áudio multicanal para vídeos que são continuamente baixados de um servidor HTTP. O suporte para áudio multicanal em vídeos transmitidos pelo Adobe Flash Media Server ainda não está disponível.
-
Embora o AIR for TV seja compatível com muitos codecs de áudio, nem todos os dispositivos para
o AIR for TV
são compatíveis com o conjunto inteiro. Use o método
flash.system.Capabilities
hasMultiChannelAudio()
para verificar se o dispositivo do AIR for TV é compatível com o codec de áudio específico de multicanais como o AC-3.
Por exemplo, considere um aplicativo que progressivamente baixa um arquivo de vídeo de um servidor. O servidor possui diferentes arquivos de vídeo H.264 que são compatíveis com diferentes codecs de áudio de multi-canais. O aplicativo poderá utilizar
hasMultiChannelAudio()
para determinar qual arquivo de vídeo deve ser solicitado do servidor. Como alternativa, o aplicativo poderá enviar ao servidor uma string contida em
Capabilities.serverString
. A string indica quais codecs de áudio multicanais estão disponíveis, permitindo ao servidor selecionar o arquivo de vídeo correto.
-
Ao usar um dos codecs de áudio DTS, existem situações em que
hasMultiChannelAudio()
retorna
true
, mas o áudio DTS não é reproduzido.
Por exemplo, considere um player de Blu-raio com uma saída S/PDIF, conectada a um velho ampliador. O velho ampliador não apoia DTS, mas S/PDIF não tem nenhum protocolo para notificar o player de Blu-raio. Se o player de Blu-raio enviar a corrente DTS ao velho ampliador, o usuário não ouve nada. Por isso, como uma prática recomendada usando DTS, forneça uma interface do usuário para que o usuário possa indicar se nenhum som está jogando. Então, o seu aplicativo pode reverter a um codec diferente.
A seguinte tabela resume quando usar diferentes codecs de áudio nos aplicativos do AIR for TV. A tabela também indica quando os dispositivos do AIR for TV utilizam aceleradores de hardware para decodificar um codec de áudio. A decodificação de hardware melhora o desempenho e evita a sobrecarga da CPU.
Codec de áudio
|
Disponibilidade para dispositivo do AIR for TV
|
Decodificação de hardware
|
Quando usar este codec de áudio
|
Mais informações
|
AAC
|
Sempre
|
Sempre
|
Em vídeos codificados com H.264.
Em transmissão de áudio tal como um serviço de transmissão de música na Internet.
|
Ao usar um fluxo contínuo AAC exclusivamente de áudio, encapsule o fluxo contínuo de áudio num recipiente MP4.
|
mp3
|
Sempre
|
Não
|
Para sons contidos nos arquivos SWF do aplicativo.
Em vídeos codificados com Sorenson Spark ou On2 VP6.
|
Um vídeo H.264 que utilize mp3 para áudio não é reproduzido em dispositivos do AIR for TV.
|
AC-3 (Dolby Digital)
E-AC-3 (Dolby Digital Avançado)
DTS Digital Surround
DTS Express
DTS-HD High Resolution Audio
DTS-HD Master Audio
|
Verificar
|
Sim
|
Em vídeos codificados com H.264.
|
Geralmente, o AIR for TV envia um fluxo de áudio multicanal para um receptor externo de áudio/vídeo que decodifica e reproduz o áudio.
|
Speex
|
Sempre
|
Não
|
Recebendo uma transmissão de voz ao vivo.
|
Um vídeo H.264 que utilize Speex para o áudio não é reproduzido em dispositivos do AIR for TV. Use Speex somente com vídeos codificados com Sorenson Spark ou On2 VP6.
|
NellyMoser
|
Sempre
|
Não
|
Recebendo uma transmissão de voz ao vivo.
|
Um vídeo H.264 que utilize NellyMoser para o áudio não é reproduzido em dispositivos do AIR for TV. Use NellyMoser somente com vídeos codificados com Sorenson Spark ou On2 VP6.
|
Nota:
Alguns arquivos de vídeo contêm dois fluxos de áudio. Por exemplo, um arquivo de vídeo poderá conter um fluxo AAC e um fluxo AC3. O AIR for TV não é compatível com tais arquivos de vídeo, e o uso desse arquivo poderá causar a ausência de som do vídeo.
Aceleração por hardware de gráfico
Usando aceleração gráfica de hardware
Os dispositivos AIR for TV fornecem aceleração de hardware para operações com imagens 2D. Os aceleradores de imagem de hardware do dispositivo liberam a CPU para realizar as seguintes operações:
Esta aceleração gráfica de hardware significa que muitas operações com imagens no aplicativo do AIR for TV podem estar executando com alto desempenho. Algumas dessas operações incluem:
-
Transições de deslocamento
-
Transições de escala
-
Intensificação e esmaecimento gradual da imagem (fade in e fade out)
-
Imagens de composição múltipla com alfa
Para obter os benefícios de desempenho da aceleração gráfica de hardware para estes tipos de operações, use uma das seguintes técnicas:
-
Defina a propriedade
cacheAsBitmap
como
true
nos objetos MovieClip e em outros objetos de exibição que possuem conteúdo na maioria das vezes inalterável. Em seguida, execute as transições laterais, as transições de intensidade e as mesclagens de alfa nesses objetos.
-
Use a propriedade
cacheAsBitmapMatrix
nos objetos de exibição que você deseja escalar ou converter (aplicar reposicionamento de x e y).
Usando operações da classe Matrix para escala e conversão, os aceleradores de hardware do dispositivo executam as operações. Alternativamente, considere o cenário no qual você altera as dimensões de um objeto de exibição que tem sua propriedade
cacheAsBitmap
definida como
true
. Quando as dimensões são alteradas, o software do runtime redesenha o bitmap. O redesenho com o software produz um desempenho pior do que a escala com aceleração de hardware usando uma operação Matrix.
Por exemplo, considere um aplicativo que exibe uma imagem que se expande quando um usuário a seleciona. Use os tempos múltiplos de operação de escala Matrix para criar a ilusão de uma imagem em expansão. Contudo, dependendo da imagem original e da imagem final, a qualidade da imagem final poderá ser inaceitável. Portanto, redefina as dimensões do objeto de exibição depois que as operações de expansão forem concluídas. Uma vez que
cacheAsBitmap
seja
true
, o software do runtime redesenhará o objeto de exibição, mas somente uma vez, e proporcionará uma imagem de alta qualidade.
Nota:
Geralmente, os dispositivos AIR for TV não suportam rotação e inclinação de hardware acelerado. Portanto, se você especificar a rotação e a inclinação na classe Matrix, o AIR for TV executará todas as operações de Matrix no software. Essas operações de software podem ter um impacto prejudicial ao desempenho.
-
Use a classe BitmapData para criar o comportamento de armazenamento de bitmap personalizado em cache.
Para obter mais informações sobre cache de bitmap, consulte o seguinte:
Gerenciando a memória gráfica
Para executar operações de imagem acelerada, os aceleradores de hardware usam memória gráfica especial. Se o seu aplicativo usar toda a memória gráfica, executará lentamente porque o AIR for TV reverterá para o uso do software das operações de imagem.
Para gerenciar o uso de memória gráfico pelo seu aplicativo:
-
Quando você estiver usando uma imagem ou outro dado de bitmap, libere sua memória gráfica associada. Para tanto, chame o método
dispose()
da propriedade
bitmapData
do objeto Bitmap. Por exemplo:
myBitmap.bitmapData.dispose();
Nota:
A liberação da referência para o objeto BitmapData não libera a memória gráfica imediatamente. O coletor de lixo do runtime eventualmente libera a memória gráfica, mas a chamada de
dispose()
oferece maior controle para o seu aplicativo.
-
Use o PerfMaster Deluxe, um aplicativo do AIR fornecido pela Adobe, para entender melhor a aceleração gráfica de hardware no seu dispositivo de destino. Este aplicativo mostra os quadros por segundo para executar várias operações. Use o PerfMaster Deluxe para comparar diferentes implementações da mesma operação. Por exemplo, compare a movimentação de uma imagem em bitmap com a movimentação de uma imagem em vetor. O PerfMaster Deluxe está disponível em
Flash Platform para TV
.
Gerenciando a lista de exibição
Para tornar um objeto de exibição invisível, defina a propriedade
visible
do objeto como
false
. Em seguida, o objeto continuará na lista de exibição, mas o AIR for TV não irá renderizá-lo nem exibi-lo. Essa técnica é útil para objetos que frequentemente entram e saem de visualização, porque demanda apenas um pouco mais de processamento. No entanto, a definição da propriedade
visible
em
false
não libera nenhum dos recursos do objeto. Portanto, ao concluir a exibição de um objeto ou, ao menos, concluí-la por algum tempo, remova o objeto da lista de exibição. Do mesmo modo, defina todas as referências ao objeto como
null
. Essas ações permitem que o coletor de lixo libere os recursos do objeto.
uso de imagem PNG e JPEG
PNG e JPEG são dois formatos de imagem comuns em aplicativos. Quanto a esses formatos de imagem no AIR for TV, considere o seguinte:
-
O AIR for TV geralmente usa aceleração de hardware para decodificar arquivos JPEG.
-
O AIR for TV geralmente usa software para decodificar arquivos PNG. A decodificação de arquivos PNG no software é rápida.
-
PNG é o único formato de plataforma cruzada que suporta transparência (um canal alfa).
Portanto, use esses formatos de imagem da seguinte maneira em seus aplicativos:
-
Use arquivos JPEG para as fotografias tirarem proveito da decodificação por aceleração de hardware.
-
Use os arquivos de imagem PNG para os elementos de interface do usuário Os elementos de interface do usuário pode ter uma configuração alfa, e a decodificação com software proporciona um desempenho suficientemente rápido para os elementos de interface do usuário.
O palco nos aplicativos AIR for TV
Ao criar um aplicativo do AIR for TV, considere o seguinte ao trabalhar com a classe Stage:
-
Resolução de tela
-
A área de visualização segura
-
O modo de escala do palco
-
O alinhamento do palco
-
O estado de exibição do palco
-
Desenhando para vários tamanhos de tela
-
A configuração de qualidade do palco
Resolução de tela
Atualmente, os aparelhos de TV costumam ter uma das seguintes resoluções de tela: 540p, 720p e 1080p. Essas resoluções de tela resultam nos seguintes valores na classe ActionScript Capabilities:
Resolução de tela
|
Capabilities.screenResolutionX
|
Capabilities.screenResolutionY
|
540p
|
960
|
540
|
720p
|
1280
|
720
|
1080p
|
1920
|
1080
|
Para escrever um aplicativo do AIR for TV de tela inteira para um dispositivo específico, defina os códigos
Stage.stageWidth
and
Stage.stageHeight
para a resolução de tela do dispositivo. Contudo, para escrever um aplicativo de tela inteira que execute em vários dispositivos, use as propriedades
Capabilities.screenResolutionX
e
Capabilities.screenResolutionY
para definir as dimensões do palco.
Por exemplo:
stage.stageWidth = Capabilities.screenResolutionX;
stage.stageHeight = Capabilities.screenResolutionY;
A área de visualização segura
A
área de visualização segura
em um televisor é uma área da tela que é afastada das bordas da tela. Essa área é inserida suficientemente longe para que o usuário possa ver a área inteira, sem que o bisel do televisor oculte qualquer parte da área. Uma vez que o bisel, que é a moldura física em torno da tela, varia de acordo com o fabricante, o afastamento necessário também varia. A área de visualização segura tenta garantir que a área visível da tela. A área de visualização segura também é conhecida como
área de título segura
.
Overscan
é a área da tela que não é visível porque está atrás do bisel.
A Adobe recomenda um afastamento de 7,5% em cada borda da tela. Por exemplo:
Considere sempre a área de visualização segura ao projetar um aplicativo do AIR for TV de tela inteira:
-
Use a tela inteira para os planos de fundo, tais como imagens de fundo ou cores de fundo.
-
Use a área de visualização segura somente para elementos de aplicativo críticos tais como texto, imagens, vídeo e itens de interface do usuário como botões.
A tabela a seguir mostra as dimensões da área de visualização segura de cada resolução de tela típica, usando um afastamento de 7,5%.
Resolução de tela
|
Largura e altura de uma área de visualização segura
|
Largura do afastamento à direita e à esquerda
|
Altura do afastamento superior e inferior
|
960x 540
|
816 x 460
|
72
|
40
|
1280x 720
|
1088x 612
|
96
|
54
|
1920 x 1080
|
1632 x 918
|
144
|
81
|
Contudo, uma prática melhor é sempre calcular dinamicamente a área de visualização segura. Por exemplo:
var horizontalInset, verticalInset, safeAreaWidth, safeAreaHeight:int;
horizontalInset = .075 * Capabilities.screenResolutionX;
verticalInset = .075 * Capabilities.screenResolutionY;
safeAreaWidth = Capabilities.screenResolutionX - (2 * horizontalInset);
safeAreaHeight = Capabilities.screenResolutionY - (2 * verticalInset);
O modo de escala do palco
Defina
Stage.scaleMode
como
StageScaleMode.NO_SCALE
e fique na escuta de eventos de redimensionamento de palco.
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, layoutHandler);
Essa configuração torna as coordenadas do palco iguais às coordenadas do pixel. Junto com o estado de exibição
FULL_SCREEN_INTERACTIVE
e o alinhamento de palco
TOP_LEFT
, essa configuração permite que você use eficientemente a área de visualização segura.
Especificamente, nos aplicativos de tela inteira esse modo de escala significa que as propriedades
stageWidth
e
stageHeight
da classe Stage correspondem às propriedades
screenResolutionX
e
screenResolutionY
da classe Capabilities.
Além disso, quando a janela do aplicativo muda de tamanho, os conteúdos do palco mantêm seu tamanho definido. O runtime não executa automaticamente nenhum layout ou escala. Do mesmo modo, o runtime despacha o evento
resize
da classe Stage quando a janela muda de tamanho. Portanto, você tem controle completo sobre como ajustar os conteúdos do aplicativo quando o aplicativo inicial e quando a janela do aplicativo muda de tamanho.
Nota:
O comportamento
NO_SCALE
é igual ao de qualquer aplicativo do AIR. Nos aplicativos AIR for TV, no entanto, essa configuração é crítica para usar a área de visualização segura.
O alinhamento do palco
Defina
Stage.align
como
StageAlign.TOP_LEFT
:
stage.align = StageAlign.TOP_LEFT;
Esse alinhamento coloca a coordenada
0,0
no canto superior esquerdo da tela, o que é conveniente para a colocação de conteúdo usando ActionScript.
Junto com o modo de escala
NO_SCALE
e com o estado de exibição
FULL_SCREEN_INTERACTIVE
, essa configuração permite que você use eficientemente a área de visualização segura.
O estado de exibição do palco
Defina
Stage.displayState
num aplicativo do AIR for TV de tela inteira como
StageDisplayState.FULL_SCREEN_INTERACTIVE
:
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
Este valor define o aplicativo do AIR para expandir o palco sobre a tela inteira com a entrada de teclado ativada.
A Adobe recomenda o uso da configuração
FULL_SCREEN_INTERACTIVE
. Junto com o modo de escala
NO_SCALE
e com o estado de alinhamento
TOP_LEFT
, essa configuração permite que você use eficientemente a área de visualização segura.
Portanto, nos aplicativos de tela inteira, em um manipulador do evento
ADDED_TO_STAGE
na classe document principal, faça o seguinte:
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;
}
Em seguida, no manipulador do evento
RESIZE
:
-
Compare os tamanhos da resolução da tela com a largura e a altura do palco. Se forem iguais, o evento
RESIZE
ocorreu, porque o estado de exibição do palco mudou para
FULL_SCREEN_INTERACTIVE
.
-
Calcule e salve as dimensões da área de visualização segura e dos afastamentos correspondentes.
private function onResize(evt:Event):void
{
if ((Capabilities.screenResolutionX == stage.stageWidth) &&
(Capabilities.screenResolutionY == stage.stageHeight))
{
// Calculate and save safe viewing area dimensions.
}
}
Quando as dimensões do palco forem iguais a
Capabilities.screenResolutionX
e
screenResolutionY
, o AIR for TV fará com que o hardware libere a melhor fidelidade possível para os vídeos e imagens.
Nota:
A fidelidade com a qual as imagens e o vídeo são exibidos numa tela de TV pode diferir dos valores
Capabilities.screenResolutionX
e
screenResolutionY
, que dependem do dispositivo que está executando o AIR for TV. Por exemplo, uma caixa set-top que executa o AIR for TV pode ter uma resolução de tela de 1280 x 720, e a TC conectada pode ter uma resolução de tela de 1920 x 1080. Contudo, o AIR for TV faz com que o hardware libere a melhor fidelidade possível. Portanto, nesse exemplo, o hardware exibe um vídeo de 1080p usando uma resolução de tela de 1920 x 1080.
Desenhando para vários tamanhos de tela
Você pode desenvolver o mesmo aplicativo do AIR for TV de tela inteira para trabalhar e bem e ter uma boa aparência em vários dispositivos AIR for TV. Faça o seguinte:
-
Defina as propriedades de palco
scaleMode
,
align
e
displayState
com os valores recomendados:
StageScaleMode.NO_SCALE
,
StageAlign.TOP_LEFT
e
StageDisplayState.FULL_SCREEN_INTERACTIVE
, respectivamente.
-
Configure a área de visualização segura com base em
Capabilities.screenResolutionX
e
Capabilities.screenResolutionY
.
-
Ajuste o tamanho e o layout do conteúdo de acordo com a largura e a altura da área de visualização segura.
Embora os objetos do conteúdo sejam grandes, especialmente quando comparados com aplicativos de dispositivos móveis, os conceitos tais como layout dinâmico, posicionamento relativo e conteúdo adaptável são iguais. Para mais informações sobre o ActionScript em apoio a esses contextos, consulte
Criação de conteúdo do Flash móvel para vários tamanhos de tela
.
A qualidade do palco
A propriedade
Stage.quality
do aplicativo do AIR for TV é sempre
StageQuality.High
. Ela não pode ser alterada.
Essa propriedade especifica a qualidade de renderização de todos os objetos Stage.
Tratamento de entrada do controle remoto
Os usuários geralmente interagem com o seu aplicativo do AIR for TV usando um controle remoto. No entanto, manipule a entrada de tecla da mesma forma que você manipula a entrada de tecla de um teclado num aplicativo para computador pessoal. Especificamente, manipulou o evento
KeyboardEvent.KEY_DOWN
. Para mais informações, consulte
Captura da entrada do teclado
no
Guia do desenvolvedor do ActionScript 3.0
.
As teclas do controle remoto mapeiam constantes do ActionScript. Por exemplo, as teclas do teclado direcional de um controle remoto mapeiam da seguinte maneira:
Tecla de teclado direcional do controle remoto
|
Constante do ActionScript 3.0
|
Up
|
Keyboard.UP
|
Para baixo
|
Keyboard.DOWN
|
À Esquerda
|
Keyboard.LEFT
|
À Direita
|
Keyboard.RIGHT
|
OK ou Selecionar
|
Keyboard.ENTER
|
O AIR 2.5 adicionou muitas outras constantes de Teclado para suportar entrada de controle remoto. Para mais informações, consulte
Classe keyboard
no livro
Referência do ActionScript® 3.0 para Adobe® Flash® Platform
.
Para garantir que seu aplicativo funcione no máximo possível de dispositivos, a Adobe recomenda o seguinte:
-
Use somente teclas de teclado direcional, se possível.
Diferentes dispositivos de controle remoto possuem diferentes conjuntos de teclas. No entanto, eles geralmente possuem sempre teclas de teclado direcional.
Por exemplo, um controle remoto de um reprodutor Blu-ray geralmente não têm as teclas “canal acima” e “canal abaixo”. Mesmo as teclas para reproduzir, pausar ou parar não existem em todos os controles remotos.
-
Use as teclas Menu e Info se o aplicativo precisar de algo mais do que as teclas de teclado direcional.
As teclas Menu e Info são as próximas teclas mais comuns nos controles remotos.
-
Considere o uso frequente de controles remotos universais.
Mesmo que você esteja criando um aplicativo para um dispositivo específico, entenda que muitos usuários não usam um controle remoto que vem com o dispositivo. Em vez disso, eles usam um controle remoto universal. Do mesmo modo, os usuários nem sempre programam seus controle remotos universais para que correspondam a todas as teclas do controle remoto do dispositivo. Portanto, é recomendável usar somente as teclas mais comuns.
-
Certifique-se de que o usuário sempre escape de uma situação usando uma das teclas do teclado direcional.
Ás vezes o seu aplicativo tem um bom motivo para usar uma tecla que não seja das mais comuns nos controles remotos. Proporcionar uma rota de escape com teclas de teclado direcional faz o seu aplicativo ter um comportamento agradável em todos os dispositivos.
-
Não exija entrada para ponteiro exceto se você conhecer o destino para o qual o dispositivo do AIR for TV tenha uma capacidade de entrada para ponteiro.
Embora muitos aplicativos de desktop prevejam entrada para mouse, a maioria dos televisores não suporta entrada para mouse. Portanto, se você estiver convertendo aplicativos de desktop para serem executados em televisores, certifique-se de alterar o aplicativo para não prever entrada para mouse. Essas modificações incluem mudanças na manipulação de eventos e alterações nas instruções ao usuário. Por exemplo, quando a tela de inicialização de um aplicativo é exibida, não exiba um texto que diga “Clique para iniciar”.
Gerenciamento do foco
Quando um elemento de interface do usuário mantém o foco em um aplicativo de computador pessoal, é objetivo do usuário introduzir eventos tais como eventos de teclado e de mouse. Além disso, um aplicativo destaca o elemento de interface do usuário com o foco. O gerenciamento do foco em um aplicativo do AIR for TV é diferente do gerenciamento do foco em um aplicativo de computador pessoal, porque:
-
Os aplicativos de computador pessoal frequentemente usam a tecla tab para mudar o foco para o próximo elemento da interface do usuário. O uso da tecla tab não se aplica aos aplicativos AIR for TV. Os dispositivos de controle remoto geralmente possuem uma tecla tab. Portanto, o gerenciamento do foco com a propriedade
tabEnabled
de um DisplayObject como o de um computador pessoal não é aplicável.
-
Os aplicativos de computador pessoal frequentemente esperam que o usuário use o mouse para focalizar um elemento da interface do usuário.
Portanto, no seu aplicativo, faça o seguinte:
-
Adicione ao Palco um evento do escutador que escute eventos do teclado tais como
KeyboardEvent.KEY_DOWN
.
-
Providencie uma lógica de aplicação para determinar qual elemento da interface do usuário será destacado para o usuário final. Certifique-se de destacar um elemento da interface do usuário quando o aplicativo iniciar.
-
Com base em sua lógica de aplicação, despache o evento Keyboard que o Palco recebeu para o objeto apropriado do elemento da interface do usuário.
Você também pode usar
Stage.focus
ou
Stage.assignFocus()
para dirigir o foco para um elemento da interface do usuário. Também é possível adicionar um escutador de eventos ao DisplayObject de forma que ele receba eventos do teclado.
Design de interface de usuário
Faça a interface do usuário de um aplicativo do AIR for TV funcionar bem em televisores incorporando essas recomendações sobre:
-
a responsividade do aplicativo
-
a usabilidade do aplicativo
-
a personalidade e as expectativas do usuário
Responsividade
Use as seguintes dicas para tornar um aplicativo do AIR for TV o mais responsivo possível.
-
Faça com que o arquivo SWF inicial do aplicativo seja o menor possível.
No arquivo SWF inicial, carregue apenas os recursos necessários para iniciar o aplicativo. Por exemplo, carregue somente a imagem da tela de inicialização do aplicativo.
Embora essas recomendações sejam válidas para os aplicativos AIR para computador pessoal, são ainda mais importantes para os dispositivos AIR for TV. Por exemplo, os dispositivos AIR for TV não têm potência de processamento igual à dos computadores pessoais. Do mesmo modo, eles armazenam o aplicativo na memória flash, cujo acesso não é tão rápido como nos discos rígidos dos computadores pessoais.
-
Certifique-se de que o aplicativo execute a uma taxa de quadros de ao menos 20 quadros por segundo.
Projete seus gráficos para atingir essa meta. A complexidade de suas operações gráficas pode afetar a taxa de quadros por segundo. Para obter dicas sobre como melhorar o desempenho de renderização, consulte
Otimizando o desempenho para a plataforma Adobe Flash
.
Nota:
O hardware gráfico nos dispositivos AIR for TV geralmente atualizam a tela à taxa de 60 Hz ou 120 Hz (60 ou 120 vezes por segundo). O hardware varre o palco em busca de atualizações a, por exemplo, 30 quadros por segundo ou 60 quadros por segundo para exibição em tela de 60 Hz ou 120 Hz. Contudo, se o usuário experimentará essas altas taxas de quadro dependerá da complexidade das operações gráficas do aplicativo.
-
Atualiza a tela dentro de 100 - 200 milésimos de segundo a partir da entrada do usuário.
Os usuários ficam impacientes quando as atualizações demoram demais, o que geralmente resulta em vários toques nas teclas.
Usabilidade
Os usuários dos aplicativos AIR for TV estão em um ambiente de “sala de estar”. Eles estão sentados na sala vendo TV a cerca de 3 a 5 metros de distância. A sala às vezes é escura. Eles geralmente usam um aparelho de controle remoto para seus comandos. Mais de uma pessoa pode usar o aplicativo; às vezes usam juntos e, às vezes, em sequência.
Portanto, ao projetar a interface do usuário para melhor usabilidade num televisor, considere o seguinte:
-
Faça com que os elementos da interface do usuário sejam grandes.
Ao conceber texto, botões ou qualquer outro elemento de interface, considere que o usuário está sentado em uma sala. Faça tudo fácil de ver e ouvir, por exemplo, a 5 metros de distância. Não caia na tentação de abarrotar a tela só porque ela é grande.
-
Use um bom contraste para tornar o conteúdo fácil de ver e ler de qualquer parte da sala.
-
Faça com que fique óbvio qual elemento da interface do usuário está em foco, tornando-o brilhante.
-
Use movimento apenas quando necessário. Por exemplo, passar de uma tela para outra para obter continuidade pode funcionar bem. Contudo, o movimento pode causar distração se não ajuda o usuário a navegar ou se não é intrínseco ao aplicativo.
-
Forneça sempre um meio óbvio para o usuário retornar na interface.
Para mais informações sobre o uso do controle remoto, consulte
Tratamento de entrada do controle remoto
.
Personalidade e expectativas do usuário
Considere que os usuários dos aplicativos AIR for TV estão geralmente procurando entretenimento de qualidade na TV em um ambiente divertido e descontraído. Eles não são necessariamente especialistas em computadores ou em tecnologia.
Portanto, projete os seus aplicativos AIR for TV com as seguintes características:
-
Não use termos técnicos.
-
Evite diálogos modais.
-
Use instruções informais e fáceis, apropriadas a um ambiente de sala de estar, não a um ambiente de trabalho ou técnico.
-
Use imagens que tenham a alta qualidade de produção que os telespectadores esperam.
-
Crie uma interface de usuário que trabalhe de maneira fácil com um dispositivo de controle remoto. Não use interface de usuário ou elementos de design que se adaptem melhor a um aplicativo de desktop ou móvel. Por exemplo, as interfaces de usuário em dispositivos de desktop e móveis geralmente envolvem apontar ou clicar botões com um mouse ou com o dedo.
Fontes e texto
Você pode usar fontes do dispositivo ou fontes incorporadas no seu aplicativo AIT para TV.
Fontes de dispositivo são as fontes que são instaladas em um dispositivo. Todos os dispositivos AIR for TV têm as seguintes fontes de dispositivo:
Nome da fonte
|
Descrição
|
_sans
|
A fonte de dispositivo
_sans
é uma fonte sans-serif. A fonte de dispositivo
_sans
. instalada nos dispositivos AIR for TV é a Myriad Pro. Normalmente, uma fonte sem serifa terá uma melhor aparência na TV do que fontes com serifa, devido à distância de visualização.
|
_serif
|
A fonte de dispositivo
_serif
é uma fonte serif. A fonte de dispositivo
serif
instaladas em todos os dispositivos AIR for TV é a Minion Pro.
|
_typewriter
|
A fonte de dispositivo
_typewriter
é uma fonte monospace. A fonte de dispositivo
_typewriter
instalada em todos os dispositivos AIR for TV é a Courier Std.
|
Todos os dispositivos AIR for TV têm as seguintes fontes de dispositivo asiáticas:
Nome da fonte
|
Idioma
|
Categoria de fonte
|
código do local
|
RyoGothicPlusN-Regular
|
Japonês
|
sans
|
ja
|
RyoTextPlusN-Regular
|
Japonês
|
serif
|
ja
|
AdobeGothicStd-Light
|
Coreano
|
sans
|
ko
|
AdobeHeitiStd-Regular
|
Chinês Simplificado
|
sans
|
zh_CN
|
AdobeSongStd-Light
|
Chinês Simplificado
|
serif
|
zh_CN
|
AdobeMingStd-Light
|
Chinês Tradicional
|
serif
|
zh_TW e zh_HK
|
Essas fontes de dispositivo do AIR for TV são:
-
Da biblioteca de fontes Adobe® Type Library
-
Assistir a bons programas de televisão
-
Projetado para titulação de vídeo
-
São fontes de contorno, não fontes bitmap
Nota:
Os fabricantes de dispositivos incluem outras fontes de dispositivo no dispositivo. Essas fontes de dispositivo fornecidas pelos fabricantes são instaladas em adição às fontes do dispositivo AIR for TV.
A Adobe fornece um aplicativo chamado FontMaster Deluxe, que exibe todas as fontes de dispositivo presentes no dispositivo. O aplicativo está disponível em
Flash Platform para TV
.
Você também pode usar fontes de dispositivo no seu aplicativo AIT para TV. Para mais informações, consulte
Renderização avançada de texto
no
Guia do desenvolvedor do ActionScript 3.0
.
A Adobe recomenda o seguinte a respeito dos campos de texto TLF:
-
Use os campos de texto TLF para textos em idiomas asiáticos para tirar proveito do local em que o aplicativo está sendo executado. Defina a propriedade
locale
no objeto TextLayoutFormat associado ao objeto TLFTextField. Para mais informações, consulte
Seleção de código de idiomas
no
Guia do desenvolvedor do ActionScript 3.0
.
-
Especifique o nome da fonte na propriedade
fontFamily
no objeto TextLayoutFormat se a fonte não for uma das fontes do dispositivo AIR for TV. O AIR for TV usará a fonte se ela estiver disponível no dispositivo. Se a fonte que você deseja não estiver no dispositivo, baseada na configuração de
locale
, o AIR for TV substituirá a fonte de dispositivo apropriada do AIR for TV.
-
Especifique
_sans
,
_serif,
ou
_typewriter
para a propriedade
fontFamily
, juntamente com a configuração da propriedade
locale
para fazer com que o AIR for TV escolha uma fonte de dispositivo correta para o AIR for TV. Dependendo do local, o AIR for TV escolhe seu conjunto de fontes de dispositivo asiáticas ou seu conjunto de fontes de dispositivo não asiáticas. Essas configurações proporcionam um modo fácil de usar automaticamente a fonte correta para a maior parte das variações idiomáticas asiáticas ou do inglês.
Nota:
Se você estiver usando campos de texto clássicos para texto em idioma asiático, especifique um nome de fonte de uma fonte de dispositivo do AIR for TV para garantir uma renderização adequada. Se você souber que outra fonte está instalada no dispositivo de destino, também poderá especificá-la.
Quanto ao desempenho do aplicativo, considere o seguinte:
-
Os campos de texto clássicos proporcionam um desempenho mais rápido do que os campos de texto TLF.
-
Um campo de texto clássico que usa fontes bitmap proporciona um desempenho melhor.
As fontes bitmap proporcionam um bitmap para cada caractere, ao contrário de fontes geométricas, que fornecem apenas dados de contorno de cada caractere. As duas fontes de dispositivo podem ser fontes bitmap.
-
Se você especificar uma fonte de dispositivo, certifique-se de que a fonte de dispositivo esteja instalada no dispositivo de destino. Se a fonte não estiver instalada no dispositivo, o AIR for TV buscará e usará outra fonte que esteja instalada no dispositivo. Contudo, esse comportamento torna mais lento o desempenho do aplicativo.
-
Como ocorre com qualquer objeto de exibição, se um objeto TextField for na maioria das vezes inalterável, defina a propriedade
cacheAsBitmap
do objeto como
true
. Essa configuração melhora o desempenho em transições como mudança de intensidade (fading), deslocamento e mesclagem de alfa. Use
cacheAsBitmapMatrix
para escala e conversão. Para obter mais informações, consulte
Aceleração por hardware de gráfico
.
Segurança do sistema de arquivos
Os aplicativos AIR for TV são aplicativos AIR e, portanto, podem acessar o sistema de arquivos do dispositivo. No entanto, em um dispositivo de “sala de estar” é muito importante que um aplicativo não possa acessar os arquivos de sistema do dispositivo ou os arquivos de outros aplicativos. Os usuários de TVs e dispositivos associados não esperam nem toleram qualquer falha no dispositivo — acima de tudo, eles estão assistindo à TV.
Portanto, o aplicativo do AIR for TV tem uma visualização limitada do sistema de arquivos do dispositivo. Usando o ActionScript 3.0, seu aplicativo pode acessar somente diretórios específicos (e seus subdiretórios). Além disso, os nomes dos diretórios que você usa no ActionScript não são nomes de diretórios reais no dispositivo. Esta camada extra protege os aplicativos AIR for TV contra o acesso mal-intencionado ou inadvertido aos arquivos locais que não pertençam a eles.
Para obter mais detalhes, consulte
Visualização de diretórios para aplicativos AIR for TV
.
A caixa de proteção do aplicativo do AIR
Ciclo de vida do aplicativo
Ao contrário de um ambiente de computação pessoal, o usuário final não pode fechar a janela na qual o aplicativo do AIR for TV está executando. Portanto, forneça um mecanismo de interface do usuário para saída do aplicativo.
Geralmente, um dispositivo permite que o usuário saia incondicionalmente de um aplicativo com a tecla de saída do controle remoto. No entanto, o AIR for TV não despacha o evento
flash.events.Event.EXITING
para o aplicativo. Portanto, salve o estado do aplicativo frequentemente para que o aplicativo possa recuperar-se para um estado razoável quando iniciar na próxima vez.
Cookies HTTP
O AIR for TV é compatível com os cookies contínuos de HTTP e com o cookies de sessão. O AIR for TV armazena cada cookie do aplicativo do AIR em um diretório específico do aplicativo:
/app-storage/<app id>/Local Store
O arquivo de cookie é nomeado
cookies
.
Nota:
O AIR em outros dispositivos, como dispositivos pessoais, não armazenam cookies separadamente para cada aplicativo. O armazenamento de cookie específico de aplicativo é compatível com o modelo de aplicativo e de segurança do sistema do AIR for TV.
Use a propriedade
URLRequest.manageCookies
do ActionScript da seguinte maneira:
-
Defina
manageCookies
como
true
. Este valor é o padrão. Isso significa que o AIR for TV adiciona cookies automaticamente às solicitações ao HTTP e memoriza os cookies na resposta do HTTP.
Nota:
Mesmo quando
manageCookies
é
true
, o aplicativo pode adicionar um cookie manualmente a uma solicitação ao HTTP usando
URLRequest.requestHeaders
. Se esse cookie tiver o mesmo nomde de um cookie que o AIR for TV esteja gerenciando, a solicitação terá dois cookies com o mesmo nome. Os valores dos dois cookies podem ser diferentes.
-
Defina
manageCookies
como
false
. Esse valor significa que o aplicativo é responsável por enviar cookies automaticamente às solicitações ao HTTP e por memorizar os cookies na resposta do HTTP.
Para obter mais informações, consulte
URLRequest
.
|
|
|