Considerazioni sulla progettazione di applicazioni AIR per TV

Considerazioni per il video

Linee guida per la codifica video

Per lo streaming video su dispositivi TV, Adobe consiglia le seguenti linee guida per la codifica:

Codec video:

H.264, profilo Main o High, codifica progressiva

Risoluzione:

720i, 720p, 1080i o 1080p

Frequenza fotogrammi:

24 fotogrammi al secondo oppure 30 fotogrammi al secondo

Codec audio:

AAC-LC o AC-3, 44.1 kHz, stereo, o questi codec per audio multicanale: E-AC-3, DTS, DTS Express, DTS-HD High Resolution Audio, DTS-HD Master Audio

Velocità di trasmissione combinata:

fino a 8M bps a seconda dell'ampiezza di banda disponibile

Velocità di trasmissione audio:

fino a 192 Kbps

Forma dei pixel:

1 × 1

Adobe consiglia di utilizzare il codec H.264 per la distribuzione di video a dispositivi AIR per TV.

Nota: AIR per TV supporta anche il video codificato con i codec Sorenson Spark e On2 VP6. Tuttavia, l'hardware non esegue la decodifica e la presentazione per questi codec, che invece vengono eseguite dal runtime utilizzando il software, con l'effetto di riprodurre il video con una frequenza di fotogrammi molto inferiore. Di conseguenza, usate il codec H.264 se possibile.

La classe StageVideo

AIR per TV supporta la decodifica e la presentazione hardware dei video con codifica H.264. Utilizzate la classe StageVideo per abilitare questa funzionalità.

Vedete Uso della classe StageVideo per la presentazione con accelerazione hardware nella Guida per gli sviluppatori di ActionScript 3.0 per informazioni dettagliate su:

  • L'API della classe StageVideo e delle classi correlate

  • Le limitazioni derivanti dall'uso della classe StageVideo

Per supportare in modo ottimale le applicazioni AIR esistenti che utilizzano l'oggetto Video per i video con codifica H.264, AIR per TV usa internamente un oggetto StageVideo. In questo modo la riproduzione video sfrutta i benefici della decodifica e della presentazione hardware. Tuttavia, l'oggetto Video è sottoposto alle stesse restrizioni che valgono per un oggetto StageVideo. Ad esempio, se l'applicazione tenta di ruotare il video, la rotazione non avviene, poiché è l'hardware, e non il runtime, che esegue la presentazione del video.

Quando invece scrivete nuove applicazioni, usate l'oggetto StageVideo per i video con codifica H.264.

Per un esempio di utilizzo della classe StageVideo, vedete l'articolo Delivering video and content for the Flash Platform on TV .

Linee guida per la distribuzione video

Su un dispositivo AIR per TV, l'ampiezza di banda disponibile della rete può variare durante la riproduzione video. Le variazioni possono verificarsi, ad esempio, quando un altro utente utilizza la stessa connessione Internet.

Di conseguenza, Adobe consiglia di distribuire i video utilizzando velocità di trasferimento adattive. Ad esempio, sul lato server, Flash Media Server supporta tale funzionalità. Sul lato client, potete utilizzare il framework OSMF (Open Source Media Framework).

I protocolli seguenti sono disponibili per la distribuzione di contenuto video a un'applicazione AIR per TV tramite la rete:
  • Streaming dinamico HTTP e HTTPS (formato F4F)

  • Streaming RTMP, RTMPE, RTMFP, RTMPT e RTMPTE

  • Download progressivo HTTP e HTTPS

Per ulteriori informazioni, consultare i seguenti riferimenti:

Considerazioni per l'audio

Il codice ActionScript per la riproduzione sonora non è differente nelle applicazioni AIR per TV rispetto ad altri tipi di applicazioni AIR. Per informazioni, vedete Operazioni con l'audio nella Guida per gli sviluppatori di ActionScript 3.0 .

Relativamente al supporto dell'audio multicanale in AIR per TV, considerate quanto segue:

  • AIR per TV supporta l'audio multicanale per i video scaricati con download progressivo da un server HTTP. l supporto dell'audio multicanale nei video scaricati in streaming da un server Adobe Flash Media non è ancora disponibile.

  • Anche se AIR per TV supporta numerosi codec audio, non tutti i dispositivi AIR per TV supportano l'intera serie. Utilizzate il flash.system.Capabilities metodo hasMultiChannelAudio() per verificare se un dispositivo AIR per TV supporta un particolare codec audio multicanale, quale AC-3.

    Ad esempio, considerate un'applicazione che scarica progressivamente un file video da un server. Il server presenta diversi file video H.264 che supportano diversi codec audio multicanale. L'applicazione può utilizzare hasMultiChannelAudio() per determinare quale file video richiedere dal server. In alternativa, l'applicazione può inviare al server la stringa contenuta in Capabilities.serverString . Tale stringa indica quali codec audio multicanale sono disponibili, consentendo al server di selezionare il file video appropriato.

  • Quando utilizzate uno dei codec audio DTS, in alcuni scenari hasMultiChannelAudio() restituisce true , ma l'audio DTS non viene riprodotto.

    Considerate, ad esempio, un lettore Blu-ray con un output S/PDIF, collegato a un vecchio amplificatore. Il vecchio amplificatore non supporta DTS, ma S/PDIF non dispone di un protocollo per notificarlo al lettore Blu-ray. Il lettore Blu-ray invia il flusso DTS al vecchio amplificatore, ma non viene emesso alcun suono. Di conseguenza, quando utilizzate DTS, è buona norma fornire un'interfaccia utente in modo che l'utente possa indicare se non viene riprodotto alcun suono. L'applicazione potrà quindi ripristinare un codec diverso.

La tabella seguente indica quando utilizzare codec audio differenti nelle applicazioni AIR per TV. La tabella indica inoltre quando il dispositivi AIR per TV impiegano acceleratori hardware per decodificare un codec audio. La decodifica hardware migliora le prestazioni e alleggerisce la CPU.

Codec audio

Disponibilità su dispositivi AIR per TV

Decodifica hardware

Quando usare questo codec audio

Ulteriori informazioni

AAC

Sempre

Sempre

Nei video con codifica H.264.

Per lo streaming audio, ad esempio nell'ambito di un servizio di streaming musicale su Internet.

Quando utilizzate un flusso AAC solo audio, incapsulatelo in un contenitore MP4.

MP3

Sempre

No

Per i suoni nei file SWF dell'applicazione.

Nei video con codifica Sorenson Spark o On2 VP6.

Un video H.264 che usa il formato mp3 per l'audio non viene riprodotto sui dispositivi AIR per TV.

AC-3 (Dolby Digital)

E-AC-3 (Enhanced Dolby Digital)

DTS Digital Surround

DTS Express

Audio DTS-HD High Resolution

Audio DTS-HD Master

Controllare

Nei video con codifica H.264.

Generalmente, AIR per TV trasmette un flusso audio multicanale a un ricevitore audio/video esterno che decodifica e riproduce l'audio.

Speex

Sempre

No

Ricezione di un flusso vocale dal vivo.

Un video H.264 che usa Speex per l'audio non viene riprodotto sui dispositivi AIR per TV. Utilizzate Speex solo nei video con codifica Sorenson Spark o On2 VP6.

NellyMoser

Sempre

No

Ricezione di un flusso vocale dal vivo.

Un video H.264 che usa NellyMoser per l'audio non viene riprodotto sui dispositivi AIR per TV. Utilizzate NellyMoser solo nei video con codifica Sorenson Spark o On2 VP6.

Nota: alcuni file video contengono due flussi audio. Ad esempio, un file video può contenere sia flussi AAC che AC3. AIR for TV non supporta tali file video, quindi l'uso di tale file può portare all'assenza di audio per il video.

Accelerazione hardware grafica

Uso dell'accelerazione hardware grafica

I dispositivi AIR per TV offrono l'accelerazione hardware per le operazioni con grafica 2D. Gli acceleratori grafici hardware del dispositivo sgravano la CPU dal carico di lavoro necessario per effettuare le seguenti operazioni:

  • Rendering bitmap

  • Ridimensionamento bitmap

  • Fusione bitmap

  • Riempimento di rettangoli pieni

L'accelerazione grafica tramite hardware fa sì che molte operazioni grafiche in un'applicazione AIR per TV siano ad alte prestazioni. Alcune di queste operazioni sono:

  • Le transizioni di scorrimento

  • Le transizioni di ridimensionamento

  • Dissolvenza in entrata e in uscita

  • Composizione di più immagini con alfa

Per ottenere i benefici prestazionali dell'accelerazione grafica hardware per questi tipi di operazioni, utilizzate una delle tecniche seguenti:

  • Impostate la proprietà cacheAsBitmap su true per gli oggetti MovieClip e altri oggetti di visualizzazione il contenuto per lo più non è soggetto a variazioni. Quindi, eseguite le transizioni di scorrimento, le transizioni di dissolvenza e le fusioni alfa su questi oggetti.

  • Utilizzate la proprietà cacheAsBitmapMatrix sugli oggetti di visualizzazione che volete ridimensionare o traslare (applicate il riposizionamento x e y).

    Utilizzando la classe Matrix per il ridimensionamento e la traslazione, gli acceleratori hardware del dispositivo eseguono le operazioni. In alternativa, valutate la possibilità di modificare le dimensioni di un oggetto di visualizzazione la cui proprietà cacheAsBitmap è impostata su true . Quando le dimensioni cambiano, il software del runtime ridisegna la bitmap. Il ridisegno tramite il software produce prestazioni inferiori rispetto al ridimensionamento con accelerazione hardware eseguito mediante un'operazione Matrix.

    Ad esempio, considerate un'applicazione che visualizza un'immagine che si espande ogni volta che è selezionata da un utente finale. Utilizzate l'operazione di ridimensionamento Matrix più volte per dare l'illusione dell'espansione dell'immagine. Tuttavia, a seconda delle dimensioni dell'immagine originale e di quella finale, la qualità dell'immagine finale potrebbe non risultare accettabile. Pertanto, ripristinate le dimensioni dell'oggetto di visualizzazione quando le operazioni di espansione sono state completate. Poiché cacheAsBitmap è true , il software del runtime ridisegna l'oggetto di visualizzazione, ma solo una volta, e riproduce un'immagine di alta qualità.

    Nota: solitamente, i dispositivi AIR per TV non supportano la rotazione e l'inclinazione con accelerazione hardware. Quindi, se specificate la rotazione e l'inclinazione nella classe Matrix, AIR per TV esegue tutte le operazioni Matrix nel software. Queste operazioni software possono avere un impatto negativo sulle prestazioni.
  • Utilizzate la classe BitmapData per creare comportamenti di caching bitmap personalizzati.

Per ulteriori informazioni sul caching bitmap, vedete le risorse seguenti.

Gestione della memoria grafica

Per eseguire le operazioni grafiche accelerate, gli acceleratori hardware usano una memoria grafica speciale. Se la vostra applicazione usa tutta la memoria grafica, funzionerà più lentamente perché AIR per TV torna a utilizzare il software per le operazioni grafiche.

Per gestire l'utilizzo della memoria grafica da parte dell'applicazione:

  • Quando avete finito di utilizzare un'immagine o altri dati bitmap, rilasciate la relativa memoria grafica. Per farlo, chiamate il metodo dispose() della proprietà bitmapData dell'oggetto Bitmap. Ad esempio:

    myBitmap.bitmapData.dispose();
    Nota: il rilascio del riferimento all'oggetto BitmapData non libera immediatamente la memoria grafica. Il processo di garbage collection del runtime a un certo punto libera effettivamente la memoria grafica, ma una chiamata del metodo dispose() offre un maggiore controllo all'applicazione.
  • Utilizzate PerfMaster Deluxe, un'applicazione AIR fornita da Adobe, per comprendere meglio il funzionamento dell'accelerazione grafica hardware sul dispositivo di destinazione. Questa applicazione mostra i fotogrammi al secondo richiesti per eseguire varie operazioni. Usate PerfMaster Deluxe per confrontare implementazioni differenti della stessa operazione. Ad esempio, confrontate lo spostamento di un'immagine bitmap con lo spostamento di un'immagine vettoriale. PerfMaster Deluxe è disponibile su Flash Platform for TV .

Gestione dell'elenco di visualizzazione

Per rendere invisibile un oggetto di visualizzazione, impostate la relativa proprietà visible su false . In tal modo l'oggetto rimane nell'elenco di visualizzazione, ma AIR per TV non ne esegue il rendering e non lo visualizza. Questa tecnica è utile per gli oggetti che entrano ed escono frequentemente dalla visualizzazione, poiché è a bassa intensità di elaborazione. Tuttavia, l'impostazione della proprietà visible su false non rilascia nessuna delle risorse dell'oggetto. Di conseguenza, quando avete finito di visualizzare un oggetto, o comunque non dovete visualizzarlo per molto tempo, rimuovetelo dall'elenco di visualizzazione. Inoltre, impostate tutti i riferimenti all'oggetto su null . Queste azioni consentono al garbage collector di rilasciare le risorse dell'oggetto.

Utilizzo di immagini PNG e JPEG

Due tra i più comuni formati di immagine usati nelle applicazioni sono PNG e JPEG. In merito all'uso di questi formati grafici nelle applicazioni AIR per TV, considerate quanto segue:

  • AIR per TV solitamente usa l'accelerazione hardware per decodificare i file JPEG.

  • AIR per TV solitamente usa il software per decodificare i file PNG. La decodifica dei file PNG nel software è veloce.

  • PNG è l'unico formato bitmap utilizzabile da più piattaforme che supporta la trasparenza (un canale alfa).

Di conseguenza, osservate queste indicazioni quando usate questi formati immagine nelle applicazioni:

  • Usate i file JPEG per le fotografie al fine di sfruttare i vantaggi della decodifica hardware accelerata.

  • Usate i file di immagine PNG per gli elementi dell'interfaccia utente. Gli elementi dell'interfaccia utente possono infatti avere un'impostazione alfa, e la decodifica software garantisce prestazioni sufficientemente veloci per tali elementi.

Lo stage nelle applicazioni AIR per TV

Quando create un'applicazione AIR per TV ed effettuate operazioni con la classe Stage, valutate i seguenti fattori:

  • Risoluzione dello schermo

  • Area di visualizzazione sicura

  • Modalità di ridimensionamento dello stage

  • Allineamento dello stage

  • Stato di visualizzazione dello stage

  • Progettazione per formati di schermo differenti

  • Impostazione della qualità per lo stage

Risoluzione dello schermo

Attualmente, i dispositivi TV presentano in genere una delle seguenti risoluzioni dello schermo: 540p, 720p, 1080p. Queste risoluzioni corrispondono ai valori seguenti nella classe ActionScript Capabilities:

Risoluzione dello schermo

Capabilities.screenResolutionX

Capabilities.screenResolutionY

540p

960

540

720p

1280

720

1080p

1920

1080

Per scrivere un'applicazione AIR per TV a schermo intero per un dispositivo specifico, codificate in modo permanente Stage.stageWidth e Stage.stageHeight per la risoluzione dello schermo del dispositivo. Tuttavia, per scrivere un'applicazione a schermo intero eseguibile su più dispositivi, utilizzate le proprietà Capabilities.screenResolutionX e Capabilities.screenResolutionY per impostare le dimensioni dello stage.

Ad esempio:

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

Area di visualizzazione sicura

L' area di visualizzazione sicura di un televisore è un'area dello schermo rientrata rispetto ai margini dello schermo stesso. Il rientro di quest'area è sufficiente per far sì che l'utente finale possa vedere l'intera area, senza che la cornice dello schermo TV possa oscurarne qualsiasi parte. Poiché la cornice, che racchiude fisicamente lo schermo, varia a seconda della marca e del modello, anche la quantità di rientro necessaria è variabile. L'area di visualizzazione sicura ha lo scopo di garantire che una determinata area dello schermo sia sempre visibile. Viene anche definita area di sicurezza titolo (title safe area).

La sovrascansione è l'area dello schermo che non è visibile perché si trova dietro la cornice.

Adobe consiglia di applicare un rientro del 7,5% su ogni bordo dello schermo. Ad esempio:

Visualizzazione dell’elemento grafico a dimensioni intere
Area di visualizzazione sicura per una risoluzione schermo di 1920x1080

Tenete sempre conto dell'area di visualizzazione sicura quando progettate un'applicazione AIR per TV a schermo intero:

  • Utilizzate l'intero schermo per gli sfondi, ad esempio le immagini di sfondo o i colori di sfondo.

  • Utilizzate l'area di visualizzazione sicura solo per gli elementi critici di un'applicazione, quali il testo, la grafica, il video e gli elementi dell'interfaccia utente come i pulsanti.

La tabella seguente mostra le dimensioni dell'area di visualizzazione sicura per ogni risoluzione tipica dello schermo, con l'applicazione di un rientro del 7,5%.

Risoluzione dello schermo

Larghezza e altezza dell'area di visualizzazione sicura

Larghezza del rientro sinistro e destro

Altezza del rientro superiore e inferiore

960 x 540

816 x 460

72

40

1280 x 720

1088 x 612

96

54

1920 x 1080

1632 x 918

144

81

Tuttavia, è sempre opportuno calcolare l'area di visualizzazione sicura in modo dinamico. Ad esempio:

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

Modalità di ridimensionamento dello stage

Impostate Stage.scaleMode su StageScaleMode.NO_SCALE e intercettate gli eventi di ridimensionamento dello stage.

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

Questa impostazione fa corrispondere le coordinate dello stage alle coordinate in pixel. Insieme allo stato di visualizzazione FULL_SCREEN_INTERACTIVE e all'allineamento dello stage TOP_LEFT , questa impostazione consente di utilizzare in modo efficace l'area di visualizzazione sicura.

Specificamente, nelle applicazioni a schermo intero, questa modalità di ridimensionamento comporta che le proprietà stageWidth e stageHeight della classe Stage corrispondano alle proprietà screenResolutionX e screenResolutionY della classe Capabilities.

Inoltre, quando le dimensioni della finestra dell'applicazione cambiano, il contenuto dello stage mantiene le dimensioni che sono state definite. Il runtime non esegue alcuna operazione automatica di layout o ridimensionamento. Il runtime invia inoltre l'evento resize della classe Stage quando le dimensioni della finestra cambiano. Pertanto potete controllare completamente il modo in cui viene modificato il contenuto dell'applicazione quando questa viene avviata e quando la finestra dell'applicazione viene ridimensionata.

Nota: il comportamento NO_SCALE è uguale a quello di qualsiasi altra applicazione AIR. Nelle applicazioni AIR per TV, tuttavia, questa impostazione è di importanza fondamentale per l'utilizzo dell'area di visualizzazione sicura.

Allineamento dello stage

Impostate Stage.align su StageAlign.TOP_LEFT :

stage.align = StageAlign.TOP_LEFT; 

Con questo allineamento, la coordinata 0,0 viene collocata nell'angolo superiore sinistro dello schermo, ovvero nella posizione più comoda per il posizionamento del contenuto con ActionScript.

Insieme alla modalità di ridimensionamento NO_SCALE e allo stato di visualizzazione FULL_SCREEN_INTERACTIVE , questa impostazione consente di utilizzare in modo efficace l'area di visualizzazione sicura.

Stato di visualizzazione dello stage

Impostate Stage.displayState in un'applicazione AIR per TV a schermo intero su StageDisplayState.FULL_SCREEN_INTERACTIVE :

stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 

Questo valore imposta l'applicazione AIR affinché espanda lo stage fino a occupare l'intero schermo, consentendo l'input da tastiera dell'utente.

Adobe consiglia di utilizzare l'impostazione FULL_SCREEN_INTERACTIVE . Insieme alla modalità di ridimensionamento NO_SCALE e all'allineamento dello stage TOP_LEFT , questa impostazione consente di utilizzare in modo efficace l'area di visualizzazione sicura.

Di conseguenza, per un'applicazione a schermo intero, scrivete il codice seguente in un gestore per l'evento ADDED_TO_STAGE nella classe principale del documento:

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; 
}

Quindi, nel gestore dell'evento RESIZE :

  • Confrontate le dimensioni della risoluzione dello schermo con la larghezza e l'altezza dello stage. Se corrispondono, l'evento RESIZE si è verificato perché lo stato di visualizzazione dello stage è cambiato in FULL_SCREEN_INTERACTIVE .

  • Calcolate e salvate le dimensioni dell'area di visualizzazione sicura e i relativi rientri.

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

Quando le dimensioni dello stage sono uguali a Capabilities.screenResolutionX e screenResolutionY , AIR per TV fa in modo che l'hardware produca la migliore fedeltà possibile per il video e la grafica.

Nota: la fedeltà alla quale la grafica e il video vengono visualizzati su uno schermo TV può variare rispetto ai valori Capabilities.screenResolutionX e screenResolutionY , a seconda del dispositivo che esegue AIR per TV. Ad esempio, un set-top box che esegue AIR per TV può avere una risoluzione video di 1280 x 720 mentre il televisore collegato potrebbe avere una risoluzione di 1920x1080. In ogni caso, AIR per TV fa in modo che l'hardware produca sempre la migliore fedeltà possibile. Pertanto, in questo esempio, l'hardware riproduce un video 1080p a una risoluzione di 1920x1080.

Progettazione per formati di schermo differenti

Potete sviluppare la stessa applicazione AIR per TV a schermo intero in modo che possa funzionare ed essere visualizzata correttamente su più dispositivi AIR per TV. Procedete nel modo seguente:

  1. Impostate le proprietà dello stage scaleMode , align e displayState sui valori consigliati: StageScaleMode.NO_SCALE , StageAlign.TOP_LEFT e StageDisplayState.FULL_SCREEN_INTERACTIVE , rispettivamente.

  2. Impostate l'area di visualizzazione sicura in base a Capabilities.screenResolutionX e Capabilities.screenResolutionY .

  3. Regolate le dimensioni e il layout del contenuto in base alla larghezza e all'altezza dell'area di visualizzazione sicura.

    Anche se gli oggetti del contenuto sono di grandi dimensioni, specialmente rispetto alle applicazioni per dispositivi mobili, concetti quali layout dinamico, posizionamento relativo e contenuto adattivo hanno le stesse implicazioni. Per ulteriori informazioni su come ActionScript supporta questi concetti, vedete Authoring mobile Flash content for multiple screen sizes .

Qualità dello stage

La proprietà Stage.quality di un'applicazione AIR per TV è sempre StageQuality.High . Non potete modificarla.

Questa proprietà specifica la qualità di rendering per tutti gli oggetti dello stage.

Gestione dell'input tramite telecomando

Gli utenti solitamente interagiscono con un'applicazione AIR per TV utilizzando un telecomando. Tuttavia, l'input da telecomando deve essere gestito esattamente come l'input da tastiera di un'applicazione desktop. Specificamente, gestite l'evento KeyboardEvent.KEY_DOWN . Per maggiori informazioni, vedete Rilevamento dell'input da tastiera nella Guida per gli sviluppatori di ActionScript 3.0 .

I tasti del telecomando vengono mappati a costanti ActionScript. Ad esempio, i tasti sul tastierino direzionale di un telecomando vengono mappati nel modo seguente:

Tasto del tastierino direzionale del telecomando

Costante ActionScript 3.0

Su

Keyboard.UP

Giù

Keyboard.DOWN

Sinistra

Keyboard.LEFT

Destra

Keyboard.RIGHT

OK o Seleziona

Keyboard.ENTER

In AIR 2.5 sono state aggiunte molte altre costanti Keyboard per il supporto dell'input da telecomando. Per un elenco completo, vedete la classe Keyboard nella Guida di riferimento di ActionScript 3.0 per la piattaforma Adobe Flash .

Per garantire che la vostra applicazione funzioni sul numero più ampio di dispositivi possibile, Adobe consiglia quanto segue:

  • Utilizzate solo i tasti del tastierino direzionale, se possibile.

    Le serie di tasti del telecomando variano da un dispositivo all'altro, ma in genere tutti i dispositivi hanno un tastierino direzionale con gli stessi tasti.

    Ad esempio, il telecomando di un lettore Blu-ray solitamente non presenta i tasti "Canale seguente" e "Canale precedente". Anche i tasti Riproduci, Pausa e Stop non sono presenti su tutti i telecomandi.

  • Utilizzate i tasti Menu e Informazioni se l'applicazione necessita di altri tasti oltre a quelli del tastierino direzionale.

    Questi due tasti, dopo quelli direzionali, sono i più comuni sui telecomandi.

  • Considerate l'ampia diffusione dei telecomandi universali.

    Anche se state creando un'applicazione per un dispositivo particolare, tenete presente che molti utenti non usano il telecomando fornito con il dispositivo, bensì un telecomando universale. Inoltre, gli utenti non programmano sempre il proprio telecomando universale per simulare tutti i tasti del telecomando del dispositivo. Pertanto, è consigliabile utilizzare solo i tasti più comuni.

  • Fate in modo che l'utente abbia sempre a disposizione una "via d'uscita" da qualsiasi situazione mediante uno dei tasti del tastierino direzionale.

    Talvolta l'applicazione ha un buon motivo per utilizzare un tasto che non è tra quelli più comuni presenti sui telecomandi. Fornire una via d'uscita tramite uno dei tasti direzionali garantisce un comportamento regolare dell'applicazione su tutti i dispositivi.

  • Non richiedete un input del puntatore a meno che non siate sicuri che il dispositivo AIR per TV di destinazione è in grado di generare un input tramite puntatore.

    Benché molte applicazioni desktop prevedano l'input tramite mouse, la maggior parte dei televisori non supporta l'input da puntatore. Di conseguenza, se convertite delle applicazioni desktop per renderle utilizzabili sui televisori, ricordatevi di modificare l'applicazione in modo da escludere l'input da mouse. Le modifiche necessarie riguardano la gestione degli eventi e le istruzioni da fornire all'utente. Ad esempio, quando appare la schermata di avvio dell'applicazione, non visualizzate un testo che dice "Fate clic per iniziare".

Gestione dello stato di attivazione

Quando un elemento dell'interfaccia utente è attivo in un'applicazione desktop, esso è il target degli eventi di input utente quali quelli attivati tramite tastiera e mouse. Inoltre, un'applicazione evidenzia l'elemento dell'interfaccia utente che ha lo stato di attivazione. La gestione dello stato di attivazione in un'applicazione AIR per TV è differente rispetto a quella in un'applicazione desktop perché:

  • Le applicazioni desktop spesso usano il tasto Tab per assegnare lo stato di attivazione al successivo elemento dell'interfaccia utente. L'uso del tasto Tab non è applicabile alle applicazioni AIR per TV. I dispositivi con telecomando solitamente non dispongono di un tasto Tab. Pertanto, la gestione dello stato di attivazione con la proprietà tabEnabled di un oggetto di visualizzazione come sul desktop non è possibile.

  • Le applicazioni desktop spesso attendono che l'utente utilizzi il mouse per assegnare lo stato di attivazione a un elemento dell'interfaccia utente.

Pertanto, all'interno dell'applicazione, effettuate le seguenti operazioni:

  • Aggiungete allo stage un listener di eventi per intercettare gli eventi Keyboard quali KeyboardEvent.KEY_DOWN .

  • Fornite una logica applicativa per determinare quale elemento dell'interfaccia utente deve essere evidenziato all'utente finale. Assicuratevi che un elemento dell'interfaccia utente venga evidenziato all'avvio dell'applicazione.

  • In base alla logica dell'applicazione, inviate l'evento Keyboard ricevuto dallo stage all'oggetto corrispondente all'elemento appropriato dell'interfaccia utente.

    Potete utilizzare Stage.focus o Stage.assignFocus() per assegnare lo stato di attivazione a un elemento dell'interfaccia utente. Potete quindi aggiungere un listener di eventi a tale oggetto di visualizzazione in modo che riceva gli eventi da tastiera.

Progettazione dell'interfaccia utente

Per garantire il buon funzionamento dell'interfaccia utente di un'applicazione AIR per TV sui televisori, incorporate le raccomandazioni riportate di seguito e relative a:

  • Capacità di risposta dell'applicazione

  • Usabilità dell'applicazione

  • Personalità e aspettative dell'utente

Capacità di risposta

Adottate i seguenti suggerimenti per aumentare al massimo la capacità di risposta di un'applicazione AIR per TV.

  • Riducete il più possibile le dimensioni del file SWF iniziale dell'applicazione.

    Nel file SWF iniziale, caricate solo le risorse necessarie per avviare l'applicazione. Ad esempio, caricate solo l'immagine della schermata di avvio dell'applicazione.

    Benché questa raccomandazione sia valida per le applicazioni AIR desktop, è ancora più importante per i dispositivi AIR per TV. Ad esempio, i dispositivi AIR per TV non dispongono di una capacità di elaborazione equivalente a quella dei computer desktop. Inoltre, essi memorizzano l'applicazione in una memoria flash, che non consente un accesso rapido come i dischi rigidi dei computer desktop.

  • Fate sì che l'applicazione venga eseguita ad almeno 20 fotogrammi al secondo.

    Progettate la grafica in modo da raggiungere questo obiettivo. La complessità delle operazioni grafiche può influire sulla frequenza dei fotogrammi. Per consigli e suggerimenti su come migliorare le prestazioni di rendering, vedete Ottimizzazione delle prestazioni per la piattaforma Adobe Flash .

    Nota: l'hardware grafico dei dispositivi AIR per TV solitamente aggiorna lo schermo a una frequenza di 60 Hz o 120 Hz (60 o 120 volte al secondo). L'hardware esegue una scansione dello stage per rilevare gli aggiornamenti a una frequenza, ad esempio, di 30 o 60 fotogrammi al secondo per la visualizzazione su uno schermo da 60 Hz o 120 Hz. Tuttavia, la possibilità che l'utente possa fruire di queste elevate frequenze di fotogrammi dipende dalla complessità delle operazioni grafiche dell'applicazione.
  • Aggiornate lo schermo entro 100 - 200 millisecondi dall'input dell'utente.

    Gli utenti diventano impazienti se gli aggiornamenti richiedono più tempo, con la conseguenza che spesso premono i tasti più volte.

Usabilità

Gli utenti delle applicazioni AIR per TV si trovano solitamente in un soggiorno, magari seduti su un divano a tre metri dal televisore. A volte la stanza è poco illuminata. Di solito l'utente usa un telecomando per inviare i comandi al dispositivo. L'applicazione può essere utilizzata da più persone, a volte insieme, altre volte in successione.

Pertanto, per progettare l'interfaccia utente dell'applicazione con un occhio alla sua usabilità, tenete conto delle considerazioni seguenti:

  • Create elementi dell'interfaccia utente di grandi dimensioni.

    Quando realizzate il testo, i pulsanti o qualsiasi altro elemento dell'interfaccia utente, tenete presente che l'utente è seduto dall'altra parte della stanza. Fate in modo che tutto sia facilmente visibile e leggibile da una distanza, ad esempio, di tre metri. Non cedete alla tentazione di riempire lo schermo di elementi solo perché è grande.

  • Usate un buon contrasto per fare in modo che il contenuto sia facile da visualizzare e da leggere dalla posizione dell'utente.

  • Fate sì che sia evidente quale elemento dell'interfaccia utente è attivo rendendo quell'elemento più luminoso.

  • Utilizzate il movimento solo se necessario. Ad esempio, lo scorrimento da una schermata a quella successiva per conferire continuità può dare buoni risultati. Tuttavia, il movimento può anche distrarre l'attenzione se non aiuta l'utente a orientarsi oppure non è intrinseco all'applicazione.

  • Fornite sempre all'utente un modo semplice per tornare indietro nell'interfaccia utente.

Per ulteriori informazioni sull'uso del telecomando, vedete Gestione dell'input tramite telecomando .

Personalità e aspettative dell'utente

Tenete presente che gli utenti delle applicazioni AIR per TV solitamente cercano un intrattenimento televisivo di qualità in un contesto di svago e relax. Non sono necessariamente esperti conoscitori di computer e cose tecnologiche.

Pertanto, progettate applicazioni AIR per TV con le seguenti caratteristiche:

  • Non usate termini tecnici.

  • Evitate le finestre di dialogo modali (a scelta obbligatoria).

  • Usate istruzioni semplici e informali, appropriate per un ambiente domestico, non per un contesto di lavoro o tecnico.

  • Utilizzate immagini che abbiano l'alta qualità grafica che gli utenti televisivi si aspettano.

  • Create un'interfaccia utente che funzioni facilmente con un dispositivo di telecomando. Non usate interfacce utente o elementi visivi che sono indicati soprattutto per applicazioni desktop o mobili. Ad esempio, le interfacce utente dei dispositivi desktop e mobili spesso prevedono pulsanti sui quali l'utente deve puntare e fare clic con un mouse o un dito.

Caratteri e testo

Potete usare sia i caratteri dispositivo che quelli incorporati nelle applicazioni AIR per TV.

I caratteri dispositivo sono quelli installati all'interno di un dispositivo. Tutti i dispositivi AIR per TV hanno i seguenti caratteri dispositivo:

Nome carattere

Descrizione

_sans

Il carattere dispositivo _sans è di tipo sans-serif (senza grazie). Il carattere dispositivo _sans installato in tutti i dispositivi AIR per TV è Myriad Pro. Tipicamente, un carattere sans-serif (senza grazie) viene visualizzato meglio su un televisore rispetto ai caratteri serif (con grazie), in virtù della distanza di visione.

_serif

Il carattere dispositivo _serif è di tipo serif (con grazie). Il carattere dispositivo _serif installato in tutti i dispositivi AIR per TV è Minion Pro.

_typewriter

Il carattere dispositivo _typewriter è di tipo monospace (a spaziatura fissa). Il carattere dispositivo _typewriter installato in tutti i dispositivi AIR per TV è Courier Std.

Tutti i dispositivi AIR per TV hanno anche i seguenti caratteri dispositivo asiatici:

Nome carattere

Lingua

Categoria carattere

Codice internazionale

RyoGothicPlusN-Regular

Giapponese

sans

ja

RyoTextPlusN-Regular

Giapponese

serif

ja

AdobeGothicStd-Light

Coreano

sans

ko

AdobeHeitiStd-Regular

Cinese semplificato

sans

zh_CN

AdobeSongStd-Light

Cinese semplificato

serif

zh_CN

AdobeMingStd-Light

Cinese tradizionale

serif

zh_TW e zh_HK

Questi caratteri dispositivo AIR per TV presentano le seguenti caratteristiche:

  • Provengono dalla libreria Adobe® Type Library

  • Vengono visualizzati bene sui televisori

  • Sono progettati per la titolazione video

  • Sono caratteri outline, non bitmap

Nota: i produttori dei dispositivi spesso incorporano altri caratteri dispositivo nei loro prodotti in aggiunta ai caratteri dispositivo AIR per TV.

Adobe mette a disposizione un'applicazione chiamata FontMaster Deluxe che visualizza tutti i caratteri dispositivo presenti in un dispositivo. L'applicazione è disponibile su Flash Platform for TV.

Potete anche incorporare i caratteri nelle applicazioni AIR per TV. Per informazioni sui caratteri incorporati, vedete Rendering avanzato del testo nella Guida per gli sviluppatori di ActionScript 3.0 .

Adobe fornisce le seguenti raccomandazioni sull'uso dei campi di testo TLF:

  • Usate i campi di testo TLF per le lingue asiatiche al fine di sfruttare le impostazioni specifiche del contesto linguistico in cui viene eseguita l'applicazione. Impostate la proprietà locale dell'oggetto TextLayoutFormat associato all'oggetto TLFTextField. Per determinare le impostazioni locali, vedete Selezione delle impostazioni locali nella Guida per gli sviluppatori di ActionScript 3.0 .

  • Specificate il nome del carattere nella proprietà fontFamily dell'oggetto TextLayoutFormat se il carattere non è uno dei caratteri dispositivo AIR per TV. AIR per TV utilizza il carattere se è disponibile nel dispositivo, altrimenti, in base all'impostazione locale , lo sostituisce con il carattere dispositivo AIR per TV appropriato.

  • Specificate _sans , _serif, o _typewriter per la proprietà fontFamily e impostate la proprietà locale per far sì che AIR per TV scelga il carattere dispositivo AIR per TV corretto. A seconda delle impostazioni locali, AIR per TV sceglie dal set di caratteri dispositivo asiatici o non asiatici. Queste impostazioni forniscono un metodo semplice per utilizzare automaticamente il carattere corretto per le quattro principali lingue asiatiche e l'inglese.

Nota: se utilizzate i campi di testo classici per il testo di una lingua asiatica, specificate il nome di un carattere dispositivo AIR per TV per garantire un rendering corretto. Se siete sicuri che un altro carattere è installato nel dispositivo di destinazione, potete anche specificare quel carattere.

Per quanto riguarda le prestazioni dell'applicazione, considerate quanto segue:

  • I campi di testo classici consentono un rendering più veloce dei campi di testo TLF.

  • Un campo di testo classico che usa caratteri bitmap garantisce le prestazioni più veloci.

    I caratteri bitmap forniscono una bitmap per ogni singolo simbolo, a differenza dei caratteri outline che forniscono solo i dati del contorno di ciascun simbolo. Sia i caratteri dispositivo che quelli incorporati possono essere caratteri bitmap.

  • Se specificate un carattere dispositivo, assicuratevi che sia installato nel dispositivo di destinazione. Se non lo è, AIR per TV trova e utilizza un altro carattere che è installato nel dispositivo. Tuttavia, questo comportamento rallenta le prestazioni dell'applicazione.

  • Come con qualsiasi altro oggetto di visualizzazione, se un oggetto TextField rimane per lo più invariato, impostatene la proprietà cacheAsBitmap su true . Questa impostazione permette di migliorare le prestazioni nelle transizioni quali la dissolvenza, lo scorrimento e la fusione alfa. Usate cacheAsBitmapMatrix per il ridimensionamento e la traslazione. Per ulteriori informazioni, vedete Accelerazione hardware grafica .

Sicurezza del file system

Le applicazioni AIR per TV sono applicazioni AIR e, di conseguenza, possono accedere al file system del dispositivo. Tuttavia, per un dispositivo "da soggiorno" è fondamentale che un'applicazione non possa accedere ai file di sistema del dispositivo o ai file di altre applicazioni. Gli utenti dei televisori e di dispositivi correlati non si aspettano e non tollerano errori del dispositivo; dopo tutto, stanno guardando la TV.

Di conseguenza, un'applicazione AIR per TV ha una visibilità limitata del file system del dispositivo. Utilizzando ActionScript 3.0, l'applicazione può accedere solo a directory specifiche (e alle relative sottodirectory). Inoltre, i nomi delle directory utilizzati in ActionScript non sono i nomi effettivi delle directory del dispositivo. Questo livello supplementare protegge le applicazioni AIR per TV dall'accesso fraudolento o non desiderato a file locali che non appartengono all'applicazione.

Per informazioni dettagliate, vedete Visualizzazione directory per applicazioni AIR per TV .

Sandbox dell'applicazione AIR

Le applicazioni AIR per TV vengono eseguite nella sandbox dell'applicazione AIR, descritta in Sandbox dell'applicazione AIR .

L'unica differenza per le applicazioni AIR per TV consiste nel fatto che esse hanno un accesso limitato al file system, come descritto in Sicurezza del file system .

Ciclo di vita dell'applicazione

A differenza di quanto avviene in un ambiente desktop, l'utente finale non può chiudere la finestra in cui viene eseguita l'applicazione AIR per TV. Pertanto, mettete a disposizione nell'interfaccia utente un meccanismo per uscire dall'applicazione.

In genere, un dispositivo consente all'utente finale di uscire direttamente da un'applicazione mediante il tasto Esci del telecomando. Tuttavia, AIR per TV non invia l'evento flash.events.Event.EXITING all'applicazione, quindi dovete salvare frequentemente lo stato dell'applicazione in modo tale che essa possa ripristinarsi a uno stato ragionevole all'avvio successivo.

Cookie HTTP

AIR per TV supporta cookie HTTP persistenti e di sessione. AIR per TV memorizza i cookie delle applicazioni AIR in una directory specifica dell'applicazione:

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

Il file dei cookie file è denominato cookies .

Nota: su altri tipi di dispositivi, quali dispositivi desktop, AIR non memorizza cookie per ogni singola applicazione. La memorizzazione di cookie specifici dell'applicazione supporta il modelli di sicurezza dell'applicazione e del sistema di AIR per TV.

Utilizzate la proprietà ActionScript URLRequest.manageCookies nel modo seguente:

  • Impostate manageCookies su true . Questo è il valore predefinito e indica che AIR per TV aggiunge automaticamente i cookie alle richieste HTTP e memorizza i cookie nella risposta HTTP.

    Nota: anche quando manageCookies è true , l'applicazione può aggiungere manualmente un cookie a una richiesta HTTP mediante URLRequest.requestHeaders . Se questo cookie ha lo stesso nome di un cookie gestito da AIR per TV, la richiesta contiene due cookie con lo stesso nome. I valori dei due cookie possono essere differenti.
  • Impostate manageCookies su false . Questo valore indica che l'applicazione è responsabile dell'invio dei cookie nelle richieste HTTP e della memorizzazione dei cookie nella risposta HTTP.

Per ulteriori informazioni, vedete URLRequest .