Überlegungen zum Entwurf einer AIR-Anwendung für TV-Geräte

Video-Überlegungen

Richtlinien zur Videokodierung

Für das Streaming von Video an ein TV-Gerät empfiehlt Adobe die folgenden Kodierungsrichtlinien:

Videocodec:

H.264, Main- oder High-Profil, progressive Kodierung

Auflösung:

720i, 720p, 1080i oder 1080p

Bildrate:

24 Bilder pro Sekunde (fps) oder 30 fps

Audiocodec:

AAC-LC oder AC-3, 44,1 kHz, Stereo, oder die folgenden Mehrkanalaudiocodecs: E-AC-3, DTS, DTS Express, DTS-HD High Resolution Audio oder DTS-HD Master Audio

Kombinierte Bitrate:

bis zu 8 Mbit/s, je nach verfügbarer Bandbreite

Audiobitrate:

bis zu 192 Kbit/s

Pixel-Seitenverhältnis:

1 × 1

Adobe empfiehlt die Verwendung des H.264-Codecs für Video, das für Geräte mit AIR für TV bereitgestellt wird.

Hinweis: AIR für TV unterstützt auch Video, das mit Sorenson Spark- oder On2 VP6-Codecs kodiert ist. Die Hardware dekodiert diese Codecs jedoch nicht und stellt sie nicht dar. Vielmehr verwendet die Laufzeitumgebung zum Dekodieren und Darstellen dieser Codecs Software, weshalb Video mit einer sehr viel niedrigeren Framerate abgespielt wird. Deshalb sollten Sie nach Möglichkeit H.264 verwenden.

Die StageVideo-Klasse

AIR für TV unterstützt die Hardwaredekodierung und -darstellung von H.264-kodiertem Video. Verwenden Sie die StageVideo-Klasse, um diese Funktion zu aktivieren.

Siehe Verwenden der StageVideo-Klasse zur Darstellung mit Hardwarebeschleunigung im ActionScript 3.0 Entwicklerhandbuch zu folgenden Informationen:

  • die API der StageVideo-Klasse und verwandter Klassen

  • Einschränkungen beim Verwenden der StageVideo-Klasse.

Zur bestmöglichen Unterstützung von vorhandenen AIR-Anwendungen, die das Video-Objekt für H.264-kodiertes Video verwenden, setzt AIR für TV intern ein StageVideo-Objekt ein. Das bedeutet, dass die Videowiedergabe von der Hardwaredekodierung und -darstellung profitiert. Das Video-Objekt unterliegt jedoch denselben Einschränkungen wie das StageVideo-Objekt. Wenn die Anwendung zum Beispiel versucht, das Video zu drehen, erfolgt keine Drehung, da die Hardware, nicht die Laufzeitumgebung, die Darstellung des Videos übernimmt.

Wenn Sie neue Anwendungen schreiben, sollten Sie jedoch das StageVideo-Objekt für H.264-kodiertes Video verwenden.

Ein Beispiel zur Verwendung der StageVideo-Klasse finden Sie unter Delivering video and content for the Flash Platform on TV .

Richtlinien für die Übermittlung von Video

Bei einem Gerät mit AIR für TV kann die verfügbare Bandbreite des Netzwerks während der Videowiedergabe variieren. Zu diesen Schwankungen kann es zum Beispiel kommen, wenn ein anderer Benutzer dieselbe Internetverbindung nutzt.

Adobe empfiehlt deshalb, dass Ihr Videoübermittlungssystem Funktionen für adaptive Bitraten verwendet. Diese werden serverseitig zum Beispiel von Flash Media Server unterstützt. Auf der Clientseite können Sie das Open Source Media Framework (OSMF) verwenden.

Die folgenden Protokolle stehen für die Übermittlung von Videoinhalten über das Netzwerk an ein Gerät mit AIR für TV zur Verfügung:
  • HTTP und HTTPS Dynamic Streaming (F4F-Format)

  • RTMP, RTMPE, RTMFP, RTMPT und RTMPTE Streaming

  • HTTP und HTTPS Progressive Download

Weitere Informationen finden Sie in folgenden Dokumenten:

Audio-Überlegungen

Der ActionScript-Code zum Abspielen von Sound unterscheidet sich in AIR-Anwendungen für TV-Geräte nicht von dem anderer AIR-Anwendungen. Weitere Informationen finden Sie unter Arbeiten mit Sounds im ActionScript 3.0 Entwicklerhandbuch .

Bezüglich der Unterstützung von Mehrkanalaudio in AIR für TV beachten Sie Folgendes:

  • AIR für TV unterstützt Mehrkanalaudio bei Videos, die progressiv von einem HTTP-Server heruntergeladen werden. Mehrkanalaudio für Videos, die von einem Adobe Flash Media Server gestreamt werden, wird noch nicht unterstützt.

  • Obwohl AIR für TV zahlreiche Audio-Codes unterstützt, unterstützen nicht alle AIR-für-TV- Geräte den vollständigen Satz. Verwenden Sie die flash.system.Capabilities -Methode hasMultiChannelAudio() , um zu überprüfen, ob ein AIR-für-TV-Gerät einen bestimmten Mehrkanal-Audio-Codec wie AC-3 unterstützt.

    Stellen Sie sich zum Beispiel eine Anwendung vor, die eine Videodatei progressiv von einem Server herunterlädt. Der Server hat verschiedene H.264-Videodateien, die verschiedene Mehrkanal-Audio-Codecs unterstützen. Die Anwendung kann hasMultiChannelAudio() verwenden, um festzustellen, welche Videodatei vom Server angefordert werden soll. Alternativ dazu kann die Anwendung den in Capabilities.serverString enthaltenen String an einen Server senden. Der String gibt an, welche Mehrkanal-Audiocodecs verfügbar sind, sodass der Server die richtige Videodatei auswählen kann.

  • Bei Verwendung eines der DTS-Audio-Codecs gibt es Szenarien, in denen hasMultiChannelAudio() zwar true zurückgibt, das DTS-Audio aber nicht abgespielt wird.

    Stellen Sie sich zum Beispiel einen Blu-ray-Player mit einem S/PDIF-Ausgang vor, der an einen alten Verstärker angeschlossen ist. Der alte Verstärker unterstützt DTS nicht, aber S/PDIF verfügt über kein Protokoll, um diesem den Blu-ray-Player zu melden. Wenn der Blu-ray-Player den DTS-Stream an den alten Verstärker sendet, kann der Benutzer nichts hören. Deshalb hat es sich bei Verwendung von DTS bewährt, eine Benutzeroberfläche bereitzustellen, sodass der Benutzer angeben kann, dass kein Ton abgespielt wird. In diesem Fall kann Ihre Anwendung dann einen anderen Codec verwenden.

In der folgenden Tabelle wird die Verwendung unterschiedlicher Audiocodecs in AIR-Anwendungen für TV-Geräte zusammengefasst. Die Tabelle gibt auch an, wenn AIR-für-TV-Geräte Hardwarebeschleunigung zum Dekodieren von Audiocodecs verwenden. Die Dekodierung mittels Hardware verbessert die Leistung und entlastet die CPU.

Audiocodec

Verfügbarkeit bei AIR-für-TV-Gerät

Hardwaredekodierung

Einsatz dieses Audiocodecs

Weitere Informationen

AAC

Immer

Immer

In Videos, die mit H.264 kodiert wurden.

Für Audiostreaming, zum Beispiel ein Internetdienst für Musikstreams.

Beim Verwenden eines reinen Audiostreams kapseln Sie den Audiostream in einem MP4-Container ein.

mp3

Immer

Nein

Für Sounds in den SWF-Dateien der Anwendung.

In Videos, die mit Sorenson Spark oder On2 VP6 kodiert sind.

Ein H.264-Video, das mp3 als Audiocodec verwendet, wird auf AIR-für-TV-Geräten nicht abgespielt.

AC-3 (Dolby Digital)

E-AC-3 (Enhanced Dolby Digital)

DTS Digital Surround

DTS Express

DTS-HD High Resolution Audio

DTS-HD Master Audio

Überprüfen

Ja

In Videos, die mit H.264 kodiert wurden.

Normalerweise übergibt AIR für TV einen Mehrkanal-Audiostream an einen externen Audio-/Video-Receiver, der das Audio dekodiert und abspielt.

Speex

Immer

Nein

Empfang eines Live-Sprachstreams.

Ein H.264-Video, das Speex als Audiocodec verwendet, wird auf AIR-für-TV-Geräten nicht abgespielt. Verwenden Sie Speex nur für Videos, die mit Sorenson Spark oder On2 VP6 kodiert wurden.

NellyMoser

Immer

Nein

Empfang eines Live-Sprachstreams.

Ein H.264-Video, das NellyMoser als Audiocodec verwendet, wird auf AIR-für-TV-Geräten nicht abgespielt. Verwenden Sie NellyMoser nur für Videos, die mit Sorenson Spark oder On2 VP6 kodiert wurden.

Hinweis: Einige Videodateien enthalten zwei Audiostreams. So kann eine Videodatei beispielsweise einen AAC-Stream und einen AC3-Stream enthalten. AIR für TV unterstützt solche Videodateien nicht. Die Verwendung derartiger Dateien kann dazu führen, dass kein Ton für das Video wiedergegeben wird.

Grafikhardwarebeschleunigung

Verwenden der Grafikhardwarebeschleunigung

Geräte mit AIR für TV stellen Hardwarebeschleunigung für den 2D-Grafikbetrieb bereit. Die Hardwaregrafikbeschleuniger des Geräts entlasten die CPU, um die folgenden Vorgänge auszuführen:

  • Bitmaprendering

  • Bitmapskalierung

  • Bitmapfüllmethode

  • Durchgehende Rechteckfüllung

Diese Grafikhardwarebeschleunigung bedeutet, dass alle Grafikoperationen in einer AIR-Anwendung für TV-Geräte hochleistungsfähig sind. Zu diesen Vorgängen gehört zum Beispiel Folgendes:

  • Schiebe-Übergänge

  • Skalierungsübergänge

  • Ein- und Ausblenden

  • Zusammensetzen mehrerer Bilder mit Alpha

Um die Leistungsvorteile der Grafikhardwarebeschleunigung für diese Vorgänge zu nutzen, verwenden Sie eines der folgenden Verfahren:

  • Setzen Sie die cacheAsBitmap -Eigenschaft für MovieClip-Objekte und andere Anzeigeobjekt, die größtenteils unveränderte Inhalte enthalten, auf true . Führen Sie dann Schiebe-Übergänge, Ein- und Ausblende-Übergänge und Alpha-Füllmethoden für diese Objekte aus.

  • Verwenden Sie die cacheAsBitmapMatrix -Eigenschaft für Anzeigeobjekt, die Sie skalieren oder versetzen möchten (neue Positionen für x und y verwenden).

    Indem Sie Vorgänge der Matrix-Klasse für die Skalierung und Versetzung verwenden, werden diese Operation von den Hardwarebeschleunigern des Geräts ausgeführt. Stellen Sie sich alternativ dazu ein Szenario vor, bei dem Sie die Abmessungen eines Anzeigeobjekts ändern, dessen cacheAsBitmap -Ereignis auf true gesetzt ist. Wenn sich die Abmessungen ändern, zeichnet die Software der Laufzeitumgebung die Bitmap neu. Das Neuzeichnen durch die Software führt zu einer schlechteren Leistung als die Hardwarebeschleunigung beim Verwenden einer Matrix-Operation.

    Stellen Sie sich zum Beispiel eine Anwendung vor, die ein Bild anzeigt, das sich bei Auswahl durch den Endanwender vergrößert. Verwenden Sie die Matrix-Skalierung mehrere Male, um den Effekt eines sich vergrößernden Bildes zu erzielen. Je nach Größe des Originalbilds und des endgültigen Bilds ist die Qualität des endgültigen Bilds möglicherweise inakzeptabel. Setzen Sie die Abmessungen des Anzeigeobjekts deshalb nach Abschluss der Vergrößerungsvorgänge zurück. Da cacheAsBitmap den Wert true hat, zeichnet die Software der Laufzeitumgebung das Anzeigeobjekt neu, jedoch nur einmal, und die Darstellung hat eine hohe Qualität.

    Hinweis: Normalerweise unterstützen Geräte mit AIR für TV kein hardwarebeschleunigtes Drehen und Neigen. Wenn Sie in der Matrix-Klasse Drehung und Neigung angeben, führt AIR für TV deshalb alle Matrix-Operationen in der Software aus. Diese Softwareoperationen können sich nachteilig auf die Leistung auswirken.
  • Verwenden Sie die BitmapData-Klasse, um ein benutzerdefiniertes Verhalten für die Bitmap-Zwischenspeicherung zu erstellen.

Weitere Informationen zur Bitmap-Zwischenspeicherung finden Sie hier:

Verwalten des Grafikspeichers

Um beschleunigte Grafikoperationen auszuführen, verwenden Hardwarebeschleuniger speziellen Grafikspeicher. Falls Ihre Anwendung den gesamten Grafikspeicher benötigt, wird die Anwendung langsamer ausgeführt, da AIR für TV auf die Software zurückgreift, um die Grafikoperationen auszuführen.

So verwalten Sie die Nutzung des Grafikspeichers durch Ihre Anwendung:

  • Wenn Sie ein Bild oder andere Bitmapdaten nicht mehr benötigen, geben Sie den zugewiesenen Grafikspeicher frei. Rufen Sie dazu die dispose() -Methode der bitmapData -Eigenschaft des Bitmap-Objekts auf. Zum Beispiel:

    myBitmap.bitmapData.dispose();
    Hinweis: Die Entfernung des Verweises auf das BitmapData-Objekt gibt nicht unmittelbar den Grafikspeicher frei. Bei der Speicherräumung durch die Laufzeitumgebung wird der Grafikspeicher letztendlich geleert, durch den Aufruf der dispose() -Methode haben Sie jedoch mehr Kontrolle über die Anwendung.
  • Verwenden Sie PerfMaster Deluxe, eine von Adobe bereitgestellte AIR-Anwendung, um die Hardwaregrafikbeschleunigung auf dem Zielgerät besser zu verstehen. Diese Anwendung zeigt die Bilder pro Sekunde für die Ausführung verschiedener Operationen. Mit PerfMaster Deluxe können Sie verschiedene Implementierungen derselben Operation vergleichen. Vergleichen Sie zum Beispiel das Verschieben eines Bitmapbilds mit dem Verschieben eines Vektorbilds. Sie finden PerfMaster Deluxe unter Flash Platform for TV .

Verwalten der Anzeigeliste

Wenn ein Objekt unsichtbar sein soll, stellen Sie die visible -Eigenschaft des Objekts auf false ein. Das Objekt befindet sich dann zwar immer noch auf der Anzeigeliste, AIR für TV stellt das Objekt jedoch nicht dar. Diese Technik ist für Objekte hilfreich, die häufig in den und aus dem Sichtbereich wechseln, da sie nur eine geringe Prozessorlast mit sich bringt. Das Einstellen der visible -Eigenschaft auf false gibt jedoch keine Ressourcen des Objekts frei. Wenn Sie ein Objekt nicht mehr oder wenigstens für einen längeren Zeitraum nicht mehr anzeigen müssen, sollten Sie es deshalb von der Anzeigeliste entfernen. Stellen Sie auch alle Verweise auf das Objekt auf null ein. Dies ermöglicht die Freigabe der Ressourcen des Objekts durch den Garbage Collector (Speicherräumung).

Verwendung von PNG- und JPEG-Bildern

Zwei Bildformate, die in Anwendungen häufig zum Einsatz kommen, sind PNG und JPEG. Beachten Sie hinsichtlich der Verwendung dieser Bildformate in AIR-Anwendungen für TV-Geräte Folgendes:

  • AIR für TV verwendet normalerweise die Hardwarebeschleunigung, um JPEG-Dateien zu dekodieren.

  • AIR für TV verwendet normalerweise die Softwarebeschleunigung, um PNG-Dateien zu dekodieren. Das Dekodieren von PNG-Dateien mithilfe der Software ist schnell.

  • PNG ist das einzige plattformübergreifende Bitmapformat, das Transparenz (Alphakanal) unterstützt.

Setzen Sie diese Bildformate in Ihren Anwendungen deshalb folgendermaßen ein:

  • Verwenden Sie JPEG-Dateien für Fotos, um die Vorteile der hardwarebeschleunigten Dekodierung zu nutzen.

  • Verwenden Sie PNG-Bilddateien für Elemente der Benutzeroberfläche. Die Elemente der Benutzeroberfläche können eine Alpha-Einstellung haben, und die Softwaredekodierung bietet eine ausreichend schnelle Leistung für Benutzeroberflächenelemente.

Die Bühne in AIR-Anwendungen für TV-Geräte

Berücksichtigen Sie beim Entwickeln einer AIR-Anwendung für TV-Geräte Folgendes, wenn Sie mit der Stage-Klasse arbeiten:

  • Bildschirmauflösung

  • Sicherer Anzeigebereich

  • Skalierungsmodus der Bühne

  • Ausrichtung der Bühne

  • Anzeigezustand der Bühne

  • Entwickeln für mehrere Bildschirmgrößen

  • Die Einstellung der Bühnenqualität

Bildschirmauflösung

Zurzeit haben TV-Geräte normalerweise eine der folgenden Bildschirmauflösungen: 540p, 720p und 1080p. Diese Bildschirmauflösungen resultieren in den folgenden Werten in der ActionScript-Capabilities-Klasse:

Bildschirmauflösung

Capabilities.screenResolutionX

Capabilities.screenResolutionY

540p

960

540

720p

1280

720

1080p

1920

1080

Um eine Vollbild-AIR-Anwendung für TV-Geräte für ein bestimmtes Gerät zu schreiben, legen Sie Stage.stageWidth und Stage.stageHeight auf die Bildschirmauflösung des Geräts fest. Um eine Vollbild-Anwendung zu schreiben, die auf mehreren Geräten ausgeführt werden kann, stellen Sie die Stage-Abmessungen dagegen mit den Capabilities.screenResolutionX - und Capabilities.screenResolutionY -Eigenschaften ein.

Zum Beispiel:

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

Sicherer Anzeigebereich

Der sichere Anzeigebereich eines Fernsehgeräts ist ein Bereich des Bildschirms, der etwas entfernt von den Ecken des Bildschirms beginnt. Dieser Bereich hat einen Abstand von den Ecken, der groß genug ist, damit der Betrachter den gesamten Bereich sehen kann, ohne dass ein Teil durch die Einfassung des Fernsehgeräts verdeckt wird. Da diese Einfassung, die den physischen Rahmen um den Bildschirm bildet, zwischen den verschiedenen Herstellern variiert, variiert auch der erforderliche Abstand zu den Ecken. Der sichere Anzeigebereich soll einen garantiert sichtbaren Bereich auf dem Bildschirm definieren. Der sichere Anzeigebereich wird manchmal auch mit dem englischen Begriff Safe Area bezeichnet.

Overscan ist der Bereich des Bildschirms, der nicht sichtbar ist, weil er sich hinter der Einfassung befindet.

Adobe empfiehlt einen Abzug von 7,5% in jeder Ecke des Bildschirms. Zum Beispiel:

Grafik in Originalgröße anzeigen
Sicherer Anzeigebereich bei einer Bildschirmauflösung von 1920x 1080

Berücksichtigen Sie beim Entwickeln einer Vollbild-AIR-Anwendung für TV-Geräte immer den sicheren Anzeigebereich:

  • Verwenden Sie den gesamten Bildschirm für Hintergründe, zum Beispiel Hintergrundbilder oder Hintergrundfarben.

  • Verwenden Sie nur den sicheren Anzeigebereich für wichtige Elemente der Anwendung, zum Beispiel Text, Grafiken, Video, und Elemente der Benutzeroberfläche, zum Beispiel Schaltflächen.

In der folgenden Tabelle sind die Abmessungen des sicheren Anzeigebereichs für die gängigsten Bildschirmauflösungen unter Verwendung eines Abzugs von 7,5% aufgeführt.

Bildschirmauflösung

Breite und Höhe des sicheren Anzeigebereichs

Breite des Abzugs links und rechts

Höhe des Abzugs oben und unten

960 x 540

816 x 460

72

40

1280 x 720

1088 x 612

96

54

1920x 1080

1632 x 918

144

81

Es hat sich jedoch bewährt, den sicheren Anzeigebereich immer dynamisch zu berechnen. Zum Beispiel:

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

Skalierungsmodus der Bühne

Legen Sie Stage.scaleMode auf StageScaleMode.NO_SCALE fest und verwenden Sie einen Listener für Bühnengrößenänderungsereignisse.

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

Mit dieser Einstellung stimmen die Bühnenkoordinaten mit den Pixelkoordinaten überein. Zusammen mit dem FULL_SCREEN_INTERACTIVE -Anzeigezustand und der TOP_LEFT -Bühnenausrichtung ermöglicht diese Einstellung die effektive Nutzung des sicheren Anzeigebereichs.

Besonders bei Vollbildanwendungen bedeutet dieser Skalierungsmodus, dass die stageWidth - und stageHeight -Eigenschaften der Stage-Klasse den screenResolutionX - und screenResolutionY -Eigenschaften der Capabilities-Klasse entsprechen.

Außerdem behält der Bühneninhalt seine definierte Größe, wenn sich die Größe des Anwendungsfensters ändern. Die Laufzeitumgebung führt keine automatische Anordnung oder Skalierung aus. Außerdem setzt die Laufzeitumgebung das resize -Ereignis der Stage-Klasse ab, wenn die Größe des Fensters geändert wird. Deshalb haben Sie vollständige Kontrolle über die Anpassung der Inhalte der Anwendung, wenn die Anwendung gestartet wird, und wenn sich die Größe des Anwendungsfensters ändern.

Hinweis: Das NO_SCALE -Verhalten ist identisch mit dem in anderen AIR-Anwendungen. In AIR-Anwendungen für TV-Geräte ist die Verwendung dieser Einstellung jedoch wichtig für die Verwendung des sicheren Anzeigebereichs.

Ausrichtung der Bühne

Stellen Sie Stage.align auf StageAlign.TOP_LEFT ein:

stage.align = StageAlign.TOP_LEFT; 

Mit dieser Ausrichtung wird die Koordinate 0,0 in der oberen linken Ecke des Bildschirms platziert, was für die Anordnung von Inhalten mit ActionScript praktisch ist.

Zusammen mit dem Skalierungsmodus NO_SCALE und dem Anzeigezustand FULL_SCREEN_INTERACTIVE ermöglicht diese Einstellung die effektive Verwendung des sicheren Anzeigebereichs.

Anzeigezustand der Bühne

Stellen Sie Stage.displayState in einer Vollbild-AIR-Anwendung für TV-Geräte auf StageDisplayState.FULL_SCREEN_INTERACTIVE ein:

stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 

Mit diesem Wert wird festgelegt, dass die AIR-Anwendung die Bühne auf den gesamten Bildschirm ausdehnt, wobei Benutzereingaben erlaubt sind.

Adobe empfiehlt die Verwendung der Einstellung FULL_SCREEN_INTERACTIVE . Zusammen mit dem Skalierungsmodus NO_SCALE und der Bühnenausrichtung TOP_LEFT ermöglicht diese Einstellung die effektive Verwendung des sicheren Anzeigebereichs.

Führen Sie deshalb für Vollbildanwendungen in einer ADDED_TO_STAGE -Ereignisprozedur der Hauptdokumentklasse Folgendes aus:

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

Dann, in der RESIZE -Ereignisprozedur:

  • Vergleichen Sie die Abmessungen der Bildschirmauflösung mit Breite und Höhe der Bühne. Wenn sie identisch sind, ist das RESIZE -Ereignis aufgetreten, weil sich der Anzeigezustand der Bühne zu FULL_SCREEN_INTERACTIVE geändert hat.

  • Berechnen und speichern Sie die Abmessungen des sicheren Anzeigebereichs und der entsprechenden Abzüge.

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

Wenn die Bühnenabmessungen identisch mit Capabilities.screenResolutionX und screenResolutionY sind, sorgt AIR für TV dafür, dass die Hardware Video und Grafiken so originalgetreu wie möglich ausgibt.

Hinweis: Die Genauigkeit, mit der Grafiken und Video auf einem Fernsehbildschirm angezeigt werden, kann sich von den Werten für Capabilities.screenResolutionX und screenResolutionY unterscheiden, die davon abhängig sind, auf welchem Gerät AIR für TV ausgeführt wird. Zum Beispiel kann eine Settopbox, auf der AIR für TV ausgeführt wird, eine Bildschirmauflösung von 1280 x 720 haben und das angeschlossene Fernsehgerät weist eine Bildschirmauflösung von 1920 x 1080 auf. AIR für TV sorgt jedoch für die bestmögliche Genauigkeit bei der Anzeige durch die Hardware. Deshalb zeigt die Hardware in diesem Beispiel ein 1080p-Video mit einer Bildschirmauflösung von 1920 x 1080 an.

Entwickeln für mehrere Bildschirmgrößen

Sie können eine Vollbild-AIR-Anwendung für TV-Geräte so entwickeln, dass sie auf verschiedenen Geräten mit AIR für TV funktioniert und gut aussieht. Gehen Sie folgendermaßen vor:

  1. Stellen Sie die Bühneneigenschaften scaleMode , align und displayState auf die jeweils empfohlenen Werte ein: StageScaleMode.NO_SCALE , StageAlign.TOP_LEFT und StageDisplayState.FULL_SCREEN_INTERACTIVE .

  2. Richten Sie den sicheren Anzeigebereich basierend auf Capabilities.screenResolutionX und Capabilities.screenResolutionY ein.

  3. Passen Sie Größe und Layout Ihrer Inhalte an die Breite und Höhe des sicheren Anzeigebereichs an.

    Auch wenn die Objekte Ihrer Inhalte groß sind, besonders im Vergleich zu Anwendungen für mobile Geräte, sind Konzepte wie dynamisches Layout, relative Positionierung und adaptive Inhalte doch gleich. Weitere Informationen zur Unterstützung dieser Konzepte durch ActionScript finden Sie unter Authoring mobile Flash content for multiple screen sizes .

Qualität der Bühne

Die Stage.quality -Eigenschaft einer AIR-für-TV-Anwendung ist immer StageQuality.High . Sie können diese Einstellung nicht ändern.

Mit dieser Eigenschaft wird die Renderingqualität für alle Stage-Objekte festgelegt.

Verarbeitung von Eingaben über die Fernbedienung

Benutzer interagieren normalerweise mithilfe einer Fernbedienung mit Ihrer AIR-für-TV-Anwendung. Verarbeiten Sie diese Tasteneingaben genau so wie die Tasteneingaben über eine Tastatur bei einer Desktopanwendung. Verarbeiten Sie insbesondere das KeyboardEvent.KEY_DOWN -Ereignis. Weitere Informationen finden Sie unter Erfassen von Tastatureingaben im ActionScript 3.0 Entwicklerhandbuch .

Die Tasten auf der Fernbedienung sind ActionScript-Konstanten zugeordnet. Die Tasten im Steuerkreuz der Fernbedienung sind zum Beispiel wie folgt zugeordnet:

Taste im Steuerkreuz der Fernbedienung

ActionScript 3.0-Konstante

Nach oben

Keyboard.UP

Nach unten

Keyboard.DOWN

Nach links

Keyboard.LEFT

Nach rechts

Keyboard.RIGHT

OK oder Auswahl

Keyboard.ENTER

In AIR 2.5 wurden zahlreiche weitere Keyboard-Konstanten hinzugefügt, um die Eingabe über die Fernbedienung zu unterstützen. Eine vollständige Liste finden Sie unter Keyboard-Klasse in der ActionScript 3.0-Referenz für die Adobe Flash-Plattform .

Um sicherzustellen, dass Ihre Anwendung auf möglichst vielen Geräten verwendet werden kann, empfiehlt Adobe Folgendes:

  • Verwenden Sie nach Möglichkeit nur die Steuerkreuztasten der Fernbedienung.

    Unterschiedliche Fernbedienungen haben unterschiedliche Tasten. Normalerweise verfügen sie jedoch immer über ein Steuerkreuz.

    Die Fernbedienung eines Blu-ray-Players hat zum Beispiel normalerweise keine Tasten für „Kanal nach oben“ und „Kanal nach unten“. Selbst die Tasten für Abspielen, Pause und Stopp sind nicht auf allen Fernbedienungen vorhanden.

  • Verwenden Sie die Menü- und Info-Tasten, wenn Ihre Anwendung mehr Tasten als die im Steuerkreuz vorhandenen benötigt.

    Nach den Steuerkreuztasten sind die Menü- und Info-Tasten die am häufigsten auf Fernbedienungen vorkommenden Tasten.

  • Berücksichtigen Sie die weite Verbreitung von Universalfernbedienungen.

    Auch wenn Sie eine Anwendung für ein bestimmtes Gerät erstellen, müssen Sie berücksichtigen, dass viele Benutzer nicht die Fernbedienung verwenden, die mit dem Gerät geliefert wurde, sondern eine Universalfernbedienung. Nicht immer programmieren Benutzer ihre Universalfernbedienungen so, dass alle Tasten mit denen der Originalfernbedienung des Geräts übereinstimmen. Deshalb ist es ratsam, nur die häufigsten Tasten zu verwenden.

  • Sorgen Sie dafür, dass der Benutzer einen Vorgang jederzeit mit einer der Steuerkreuztasten beenden kann.

    Unter Umständen gibt es gute Gründe, warum in Ihrer Anwendung eine Taste verwendet werden muss, die nicht zu den am häufigsten vorkommenden Tasten bei Fernbedienungen gehört. Deshalb ist es wichtig, dass es immer einen „Fluchtweg“ mit einer der Steuerkreuztasten gibt, damit die Anwendung auf allen Geräten problemlos funktioniert und nicht hängenbleibt.

  • Verlangen Sie keine Zeigereingaben, wenn Sie nicht davon ausgehen können, dass das angestrebte AIR-für-TV-Gerät über die Möglichkeit der Zeigereingabe verfügt.

    Auch wenn viele Desktopanwendungen Mauseingaben erwarten, unterstützen doch die wenigsten TV-Geräte die Eingabe mithilfe eines Zeigers. Falls Sie eine Desktopanwendung in eine Anwendung für TV-Geräte umwandeln, denken Sie deshalb daran, die Anwendung entsprechend anzupassen. Dazu gehört das Ändern der Ereignisverarbeitung und der Anweisungen für den Benutzer. Der Startbildschirm der Anwendung sollte zum Beispiel nicht den Text „Zum Abspielen hier klicken“ enthalten.

Fokusverwaltung

Wenn ein Benutzeroberflächenelement in einer Desktopanwendung den Fokus hat, ist es das Ziel von Benutzereingaben wie Tastatur- und Mausereignisse. Außerdem ist in einer Anwendung das Benutzeroberflächenelement, das den Fokus hat, hervorgehoben. Die Fokusverwaltung in AIR-Anwendungen für TV-Geräte unterscheidet sich von der Fokusverwaltung in Desktopanwendungen in den folgenden Punkten:

  • Desktopanwendungen verwenden häufig die Tabulatortaste, um den Fokus auf das nächste Element der Benutzeroberfläche zu verlagern. Die Verwendung der Tabulatortaste gilt nicht für AIR-Anwendungen für TV-Geräte, da Fernbedienungen normalerweise keine Tabulatortaste haben. Deshalb kann der Fokus nicht mithilfe der tabEnabled -Eigenschaft eines DisplayObject-Objekts verwaltet werden wie auf dem Desktop.

  • Desktopanwendungen erwarten häufig, dass der Benutzer einem Steuerungselement der Benutzeroberfläche mit der Maus den Fokus übergibt.

Gehen Sie deshalb in Ihrer Anwendung folgendermaßen vor:

  • Fügen Sie einen Ereignis-Listener für das Stage-Objekt hinzu, der auf Keyboard-Ereignisse wie KeyboardEvent.KEY_DOWN wartet.

  • Stellen Sie eine Anwendungslogik bereit, die bestimmt, welches Element der Benutzeroberfläche für den Endanwender hervorgehoben wird. Achten Sie darauf, ein Benutzeroberflächenelement hervorzuheben, wenn die Anwendung startet.

  • Setzen Sie basierend auf der Anwendungslogik das vom Stage-Objekt empfangene Keyboard-Ereignis an das entsprechende Element der Benutzeroberfläche ab.

    Sie können den Fokus auch mit Stage.focus oder Stage.assignFocus() einem Benutzeroberflächenelement zuweisen. Sie können dann einen Ereignis-Lister zu diesem DisplayObject hinzufügen, sodass es Tastaturereignisse empfängt.

Entwurf der Benutzeroberfläche

Beachten Sie die Empfehlungen zu den folgenden Punkten, damit AIR-für-TV-Anwendungen gut auf Fernsehgeräten funktionieren:

  • Ansprechbarkeit der Anwendung

  • Benutzerfreundlichkeit der Anwendung

  • Vorkenntnisse und Erwartungen des Benutzers

Ansprechbarkeit

Die folgenden Tipps tragen dazu bei, dass AIR-Anwendungen für TV-Geräte möglichst gut reagieren.

  • Achten Sie darauf, dass die Anfangs-SWF-Datei der Anwendung so klein wie möglich ist.

    Laden Sie in der Anfangs-SWF-Datei nur die für den Start der Anwendung erforderlichen Ressourcen. Zum Beispiel könnten Sie nur das Startbild der Anwendung laden.

    Diese Empfehlung gilt zwar auch für AIR-Desktopanwendungen, ist für Geräte mit AIR für TV aber noch wichtiger. Geräte mit AIR für TV verfügen zum Beispiel über weniger Rechenleistung als Desktopcomputer. Außerdem speichern sie die Anwendung im Flash-Speicher, auf den nicht so schnell zugegriffen werden kann wie auf die Festplatte von Desktopcomputern.

  • Die Anwendung sollte mit einer Bildrate von mindestens 20 fps ausgeführt werden.

    Entwerfen Sie Ihre Grafiken entsprechend, um dieses Ziel zu erreichen. Die Komplexität der Grafikvorgänge kann sich auf die Bildrate auswirken. Tipps zum Verbessern der Renderingleistung finden Sie unter Leistungsoptimierung für die Adobe Flash-Plattform .

    Hinweis: Die Grafikhardware von Geräten mit AIR für TV aktualisiert den Bildschirm normalerweise mit 60 Hz oder 12  Hz (60 oder 120 Mal pro Sekunde). Beim 60-Hz- oder 120-Hz-Bildschirm sucht die Hardware die Bühne mit einer Rate von beispielsweise 30 fps oder 60 fps nach Aktualisierungen ab. Ob der Benutzer diese höheren Bildraten jedoch bemerkt, ist von der Komplexität der Grafikvorgänge in der Anwendung abhängig.
  • Aktualisieren Sie den Bildschirm innerhalb von 100 bis 200 Millisekunden nach einer Benutzereingabe.

    Benutzer werden ungeduldig, wenn Aktualisierungen länger dauern, und drücken dann häufig mehrmals auf die entsprechende Taste.

Benutzerfreundlichkeit

Benutzer von AIR-Anwendungen für TV-Geräte befindet sich meistens in einer Wohnzimmerumgebung. Sie sitzen einige Meter vom Fernsehgerät entfernt. Der Raum ist manchmal ziemlich dunkel. Normalerweise wird die Fernbedienung für Benutzereingaben verwendet. Mehrere Personen können die Anwendung verwenden; manchmal gleichzeitig, manchmal nacheinander.

Beachten Sie deshalb beim Entwurf der Benutzeroberfläche die folgenden Punkte für die Benutzerfreundlichkeit:

  • Achten Sie darauf, dass die Elemente der Benutzeroberfläche groß sind.

    Denken Sie daran, dass der Benutzer einige Meter entfernt auf der anderen Seite des Raums sitzen kann, wenn Sie Text, Schaltflächen oder andere Elemente der Benutzeroberfläche entwerfen. Achten Sie darauf, dass alles auch noch aus einer Entfernung von ungefähr 3 Metern gut zu erkennen und zu lesen ist. Auch wenn der Bildschirm groß ist – überfüllen Sie ihn nicht.

  • Verwenden Sie deutliche Kontraste, damit der Inhalt auch von der anderen Seite des Raums gut zu sehen ist.

  • Damit klar erkennbar ist, welches Benutzeroberflächenelement den Fokus hat, heben Sie dieses Element hell hervor.

  • Verwenden Sie Bewegung nur, wenn es wirklich nötig ist. Ein Schiebe-Übergang von einem Bildschirm zu nächsten kann zum Beispiel gut funktionieren. Bewegung kann den Benutzer aber auch ablenken oder verwirren, wenn sie nicht bei der Navigation hilft oder Teil der Anwendung ist.

  • Der Benutzer sollte immer deutlich erkennen können, wie er durch die Benutzeroberfläche zurückgehen kann.

Weitere Informationen zur Verwendung der Fernbedienung finden Sie unter Verarbeitung von Eingaben über die Fernbedienung .

Vorkenntnisse und Erwartungen des Benutzers

Bedenken Sie, dass Benutzer von AIR-Anwendungen für TV-Geräte im Normalfall Unterhaltung in TV-Qualität in einer entspannten Umgebung erwarten. Sie kennen sich nicht unbedingt mit Computern oder Technik im Allgemeinen aus.

Berücksichtigen Sie beim Entwurf Ihrer AIR-für-TV-Anwendungen deshalb Folgendes:

  • Verwenden Sie keine technischen Begriffe.

  • Vermeiden Sie Modaldialogfelder.

  • Benutzen Sie freundliche, informelle Anweisungen, die für die Wohnzimmerumgebung geeignet sind, also nicht eher in ein technisches oder berufliches Umfeld passen.

  • Verwenden Sie Grafiken in der hohen Qualität, die Fernsehzuschauer erwarten.

  • Erstellen Sie eine Benutzeroberfläche, die unkompliziert mit einer Fernbedienung zu benutzen ist. Verwenden Sie keine Benutzeroberflächen- oder Designelemente, die sich eher für eine Desktop- oder Mobilanwendung eignen. Benutzeroberflächen auf Desktop- und Mobilgeräten beruhen zum Beispiel häufig auf dem Zeigen oder der Schaltflächenaktivierung mit der Maus oder einem Finger.

Schriftarten und Text

Sie können in Ihrer AIR-Anwendung für TV-Geräte entweder Geräteschriftarten oder eingebettete Schriftarten verwenden.

Geräteschriftarten sind die auf einem Gerät installierten Schriftarten. Alle Geräte mit AIR für TV verfügen über die folgenden Geräteschriftarten:

Schriftname

Beschreibung

_sans

Die Geräteschriftart _sans ist eine Schrift ohne Serifen. Die Geräteschriftart _sans , die auf allen AIR-für-TV-Geräten installiert ist, heißt „Myriad Pro“. Normalerweise sieht eine Schriftart ohne Serifen wegen des größeren Betrachtungsabstands zum Bildschirm auf TV-Geräten besser aus als eine Serifenschrift.

_serif

Die Geräteschriftart _serif ist eine Schrift mit Serifen. Die Geräteschriftart _serif , die auf allen AIR-für-TV-Geräten installiert ist, heißt „Minion Pro“.

_typewriter

Die Geräteschriftart _typewriter ist eine nicht proportionale Schrift. Die Geräteschriftart _typewriter , die auf allen AIR-für-TV-Geräten installiert ist, heißt „Courier Std“.

Alle Geräte mit AIR für TV verfügen außerdem über die folgenden asiatischen Geräteschriftarten:

Schriftname

Sprache

Schriftkategorie

Gebietsschemacode

RyoGothicPlusN-Regular

Japanisch

sans

ja

RyoTextPlusN-Regular

Japanisch

serif

ja

AdobeGothicStd-Light

Koreanisch

sans

ko

AdobeHeitiStd-Regular

Chinesisch (VRC)

sans

zh_CN

AdobeSongStd-Light

Chinesisch (VRC)

serif

zh_CN

AdobeMingStd-Light

Chinesisch (Taiwan)

serif

zh_TW und zh_HK

Diese AIR-für-TV-Geräteschriftarten

  • stammen aus der Adobe® Type Library

  • sehen auf Fernsehbildschirmen gut aus

  • eignen sich für Videotitel

  • sind Schriftkonturen, keine Bitmapschriftarten

Hinweis: Gerätehersteller installieren häufig weitere Geräteschriftarten auf ihren Geräten. Diese vom Hersteller bereitgestellten Geräteschriftarten werden zusätzlich zu den AIR-für-TV-Geräteschriftarten installiert.

Mit der Adobe-Anwendung FontMaster Deluxe können alle Geräteschriftarten auf dem Gerät angezeigt werden. Sie finden diese Anwendung unter Flash Platform for TV .

Sie können Schriftarten auch in Ihre AIR-Anwendung für TV-Geräte einbetten. Informationen zu eingebetteten Schriftarten finden Sie unter Erweiterte Textdarstellung im ActionScript 3.0 Entwicklerhandbuch .

Hinsichtlich der Verwendung von TLF-Textfeldern empfiehlt Adobe Folgendes:

  • Verwenden Sie TLF-Textfelder für Text in asiatischen Sprachen, um das Gebietsschema zu nutzen, in dem die Anwendung ausgeführt wird. Stellen Sie die locale -Eigenschaft des TextLayoutFormat-Objekts ein, das mit dem TLFTextField-Objekt verknüpft ist. Informationen zur Bestimmung des aktuellen Gebietsschemas finden Sie unter Auswählen eines Gebietsschemas im ActionScript 3.0 Entwicklerhandbuch .

  • Geben Sie den Schriftnamen in der fontFamily -Eigenschaft im TextLayoutFormat-Objekt an, falls diese Schriftart nicht zu den AIR-für-TV-Geräteschriftarten gehört. AIR für TV verwendet die Schriftart, wenn sie auf dem Gerät verfügbar ist. Befindet sich die angeforderte Schriftart gemäß der locale -Einstellung nicht auf dem Gerät, ersetzt AIR für TV die entsprechende AIR-für-TV-Geräteschriftart.

  • Geben Sie _sans , _serif oder _typewriter für die fontFamily -Eigenschaft zusammen mit der locale -Eigenschaft an, damit AIR für TV die richtige AIR-für-TV-Geräteschriftart auswählen kann. Je nach Gebietsschema wählt AIR für TV die Schriftart aus den asiatischen Geräteschriftarten oder aus den nicht asiatischen Geräteschriftarten aus. Mit diesen Einstellungen ist es unkompliziert, die richtige Schriftart für die vier wichtigsten asiatischen Gebietsschemas und für Englisch auszuwählen.

Hinweis: Wenn Sie klassische Textfelder für Text in asiatischer Sprache verwenden, geben Sie den Namen einer AIR-für-TV-Geräteschriftart an, damit die richtige Darstellung gewährleistet ist. Wenn Sie sicher wissen, dass auf dem Zielgerät eine weitere Schriftart installiert ist, können Sie auch diese angeben.

Berücksichtigen Sie hinsichtlich der Leistung der Anwendung Folgendes:

  • Klassische Textfelder bieten eine schnellere Leistung als TLF-Textfelder.

  • Ein klassisches Textfeld, das Bitmapschriftarten verwendet, bietet die schnellste Leistung.

    Bitmapschriftarten stellen einen Bitmap für jedes Zeichen bereit, anders als Konturschriftarten, die nur Umrissdaten zu den einzelnen Zeichen bieten. Sowohl Geräteschriftarten als auch eingebettete Schriftarten können Bitmapschriftarten sein.

  • Wenn Sie eine Geräteschriftart angeben, achten Sie darauf, dass diese Gerätschriftart auf dem Zielgerät installiert ist. Ist sie nicht auf dem Gerät installiert, sucht AIR für TV eine andere Schriftart, die auf dem Gerät installiert ist, und verwendet diese. Dieses Verhalten beeinträchtigt die Leistung der Anwendung.

  • Wie für alle Anzeigeobjekte gilt auch für TextField-Objekte: wenn sich das Objekt kaum ändert, stellen Sie die cacheAsBitmap -Eigenschaft des Objekts auf true ein. Mit dieser Einstellung verbessern Sie die Leistung für Übergänge wie Ein- und Ausblenden, Schieben und Alpha-Füllmethode. Verwenden Sie cacheAsBitmapMatrix für Skalierungen und Versetzungen. Weitere Informationen finden Sie unter Grafikhardwarebeschleunigung .

Dateisystemsicherheit

AIR-für-TV-Anwendungen sind AIR-Anwendungen und haben deshalb Zugriff auf das Dateisystem des Geräts. Bei einem „Wohnzimmergerät“ ist es jedoch wichtig, dass eine Anwendung nicht auf die Systemdateien des Geräts oder auf die Dateien anderer Anwendungen zugreifen kann. Benutzer von Fernsehern und anderen TV-Geräten erwarten keine Gerätefehler und tolerieren diese auch nicht – schließlich wollen sie einfach nur fernsehen.

Deshalb haben AIR-für-TV-Anwendungen nur eingeschränkte Einsicht in das Dateisystem des Geräts. Mit ActionScript 3.0 kann Ihre Anwendung nur auf bestimmte Verzeichnisse (und deren Unterverzeichnisse) zugreifen. Außerdem sind die in ActionScript verwendeten Verzeichnisnamen nicht die tatsächlichen Verzeichnisnamen auf dem Gerät. Durch diese zusätzliche Absicherung wird verhindert, dass AIR-für-TV-Anwendungen absichtlich oder versehentlich auf lokale Dateien zugreifen, die ihnen nicht gehören.

Weitere Informationen finden Sie unter Verzeichnisansicht für AIR für TV-Anwendungen .

Die AIR-Anwendungs-Sandbox

AIR-für-TV-Anwendungen werden in der AIR-Anwendungssandbox ausgeführt, die unter Die AIR-Anwendungs-Sandbox beschrieben wird.

Der einzige Unterschied bei AIR-für-TV-Anwendungen ist, dass sie eingeschränkten Zugriff auf das Dateisystem haben wie unter Dateisystemsicherheit beschreiben.

Lebenszyklus von Anwendungen

Anders als in einer Desktopumgebung kann der Endanwender das Fenster, indem die AIR-für-TV-Anwendung läuft, nicht schließen. Stellen Sie in der Benutzeroberfläche deshalb eine Möglichkeit bereit, die Anwendung zu beenden.

Normalerweise lässt ein Gerät zu, dass der Endanwender eine Anwendung mit der Exit-Taste der Fernbedienung beendet. AIR für TV setzt jedoch nicht das flash.events.Event.EXITING -Ereignis an die Anwendung ab. Speichern Sie den Anwendungsstatus deshalb häufig, damit die Anwendung sich in einem annehmbaren Zustand selbst wiederherstellen kann, wenn sie das nächste Mal aufgerufen wird.

HTTP-Cookies

AIR für TV unterstützt beständige HTTP-Cookies und Sitzungscookies. AIR für TV speichert die Cookies jeder AIR-Anwendung in einem anwendungsspezifischen Ordner:

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

Die Cookiedatei hat den Namen cookies .

Hinweis: Auf anderen Geräten, zum Beispiel Desktops, speichert AIR die Cookies nicht separat für die einzelnen Anwendungen. Die anwendungsspezifische Speicherung von Cookies unterstützt das Anwendungs- und Systemsicherheitsmodell von AIR für TV.

Verwenden Sie die ActionScript-Eigenschaft URLRequest.manageCookies wie folgt:

  • Setzen Sie manageCookies auf true . Dieser Wert ist die Standardeinstellung. Er bedeutet, dass AIR für TV automatisch Cookies zu HTTP-Anforderungen hinzufügt und sich in der HTTP-Antwort an Cookies erinnert.

    Hinweis: Auch wenn manageCookies den Wert true hat, kann die Anwendung mit URLRequest.requestHeaders manuell einen Cookie zu einer HTTP-Anforderung hinzufügen. Wenn dieser Cookie denselben Namen hat wie ein Cookie, den AIR für TV verwaltet, enthält die Anforderung zwei Cookies mit demselben Namen. Die Werte der beiden Cookies können sich unterscheiden.
  • Setzen Sie manageCookies auf false . Dieser Wert bedeutet, dass die Anwendung dafür zuständig ist, Cookies in HTTP-Anforderungen zu senden und sich in der HTTP-Antwort an die Cookies zu erinnern.

Weitere Informationen finden Sie unter URLRequest .