Einleitung
Seitdem Google* Miracast* unter Android* 4.2 unterstützt, gewinnt die Wireless-Display-Technik auf Android-Smartphones und -Tablets zunehmend an Beliebtheit. Mit dieser Technik können Benutzer die LCD-Größe ihres Smartphones einfacher erweitern. Ich gehe davon aus, dass ISVs die Wireless-Display-Funktion in ihre Anwendungen integrieren werden, insbesondere in Spiele und Video-Player.
Die Umsetzung einer Intel® Wireless-Display-Differenzierung für Miracast unter Android auf x86-Smartphones stellt für ISVs allerdings eine große Herausforderung dar. Dieser Artikel beschreibt anhand eines Praxisbeispiels, in dem der iQiyi*-Online-Videoplayer und Kingsoft Office* auf dem K900 bereitgestellt werden, wie sich die Differenzierung für zwei Bildschirme für Miracast implementieren lässt. Wir hoffen, dass in Zukunft viele interessante Anwendungen umgesetzt werden.
Was ist Miracast?
Die Wi-Fi Alliance hat Wi-Fi* CERTIFIED Miracast am 19.9.2012 offiziell vorgestellt. Es handelt sich hierbei um eine bahnbrechende Lösung für die nahtlose Übertragung der Videoanzeige zwischen Geräten – ohne Kabel oder Netzwerkverbindung. Benutzer können beispielsweise in Echtzeit Fotos oder Videos von einem Smartphone auf einem Großbildfernseher wiedergeben, auf einem Notebook angezeigte Inhalte auf einen Projektor im Konferenzraum übertragen oder über Kabel-TV empfangene Programme live auf einem Tablet anschauen. Für den Verbindungsaufbau nutzt Miracast Wi-Fi CERTIFIED Wi-Fi Direct*. Da die Vernetzungsfunktionalität direkt in den für Miracast zertifizierten Geräten integriert ist, ist kein Wi-Fi-Netzwerk erforderlich.
Miracast nutzt hierfür eine Wi-Fi-Direct-Peer-to-Peer-Verbindung. Die folgende Grafik veranschaulicht die Wi-Fi-basierte Miracast-Architektur.
Abb. 1: Miracast*-Architektur
Miracast ermöglicht die folgenden vier Verbindungsmodi:
Abb. 2: Miracast*-Verbindungsmodi
Mit Miracast können Sie ohne Wi-Fi-Access-Point (AP) eine geräteübergreifende Verbindung herstellen (siehe Verbindungsmodus 1). Die Bildschirmverbindung kann auch mit einem Adapter und einer gleichzeitigen AP-Verbindung erfolgen (siehe Verbindungsmodus 2). Mit dieser Lösung lassen sich zum Beispiel Online-Videos zu Hause bequem anschauen. Wenn Sie einen smart TV haben, der Miracast unterstützt, lassen sich sogar Ihr Fernseher, AP und Smartphone miteinander verbinden (siehe Verbindungsmodus 3).
Dem Miracast-Standard zufolge lässt sich der interaktive Modus des Ausgangs- und Anzeigegeräts wie folgt abbilden:
Abb. 3: Session-Management von Miracast*
Das Ausgangs- und Anzeigegerät ermitteln vor dem Verbindungsaufbau die Miracast-Funktionalität des jeweils anderen Geräts. Die Verbindung basiert auf Wi-Fi Direct oder TDLS. Die beiden Geräte legen die Parameter für die Miracast-Session anhand der ausgehandelten Funktionalität fest. Der Aushandlungsprozess basiert auf der TCP-Verbindung. Die Inhalte werden vom Ausgangsgerät basierend auf der UDP-Verbindung im MPEG2-TS-Format auf das Anzeigegerät übertragen.
Die von Miracast unterstützten Wireless-Streaming-Formate sind in Tabelle 4 aufgeführt.
Tabelle 4: Von Miracast unterstützte Streaming-Formate
Miracast unter Android 4.2
Google unterstützt Miracast ab Android 4.2. Endbenutzer können Filme, Fotos, YouTube*-Videos und beliebige andere Bildschirminhalte mittels Wireless-Display-Technik auf einen HD-Fernseher übertragen. Der externe HD-Fernseher wird als externer Bildschirm aufgeführt.
Unter Android unterstützt Miracast den Klon- und den Präsentationsmodus (siehe unten):
Abb. 5: Von Miracast* unterstützte Modi
Im Klonmodus wird die Anzeige des Smartphones auf dem externen Bildschirm dupliziert. Die Auflösung der an den Adapter übertragenen Bilder entspricht der Auflösung des lokalen Bildschirms. In diesem Modus sind sowohl der lokale als auch der externe Bildschirm aktiv und zeigen den gleichen Inhalt.
Unter Android kann Ihre Anwendung jetzt im Präsentationsmodus auf zusätzlichen Bildschirmen, die per Kabel oder Wi-Fi mit dem Gerät des Benutzers verbunden sind, separate Inhalte anzeigen. Zur Unterstützung dieses Modus muss die Anwendung angepasst werden; andernfalls wird standardmäßig der Klonmodus verwendet.
Differenzierung für Miracast auf Smartphones mit Intel® Architektur (IA)
Intel® Wireless-Display ist auf Android*-Smartphones und -Tablets mit Miracast voll kompatibel. Darüber hinaus unterstützt Intel einige Anwendungen mit Differenzierungsmodellen für Miracast auf Smartphones mit IA.
Die erste Lösung besteht darin, iQiyi das Streamen von Videos im Hintergrund zu ermöglichen. Mithilfe einer iQiyi-Anwendung, die Hintergrund-Streaming ermöglicht, lassen sich Videos mit einer Auflösung von 1080p an einen externen Bildschirm übertragen. Benutzer können die Anwendung verlassen und gleichzeitig 1080p-Videos auf einem lokalen Bildschirm abspielen oder eine beliebige andere Anwendung nutzen, zum Beispiel E-Mails versenden oder im Web browsen. Die Hintergrundwiedergabe wird dadurch nicht gestört (siehe unten):
Abb. 6: Video-BGM-Funktion von iQiyi
Die zweite Lösung besteht darin, es Kingsoft Office zu gestatten, die Benutzeroberfläche zwischen dem lokalen und dem externen Bildschirm zu teilen. Wird zum Beispiel eine Wireless-Display-Verbindung zu einem Fernseher hergestellt, kann die entsprechend geeignete Kingsoft-Office-Anwendung gleichzeitig auf dem externen Bildschirm PowerPoint*-Folien und auf dem Smartphone Präsentationsnotizen anzeigen, was für den Vortragenden äußerst nützlich ist. Als Erinnerungsfunktion für den Vortragenden soll in Zukunft auf dem Smartphone-Display auch eine Stoppuhr verfügbar sein.
Abb. 7: UI-Teilung unter Kingsoft Office
Diese beiden Differenzierungsmöglichkeiten wurden auf Basis des Miracast-Präsentationsmodus und der IA-Hardwarefunktionalität des Smartphones entwickelt. Die beiden Anwendungen, die Endbenutzer auf einem Smartphone mit Intel® Architektur installieren können, stehen auf Intel AppUp® zum Download bereit.
Praxisbeispiel: Differenzierung für zwei Bildschirme implementieren
Dieser Abschnitt erläutert, wie Sie – basierend auf unserer Erfahrung mit der Implementierung einer iQiyi-Anwendung – eine Hintergrund-Videostreaming-Funktion umsetzen können.
Wie wir wissen, besteht die größte Herausforderung bei der Realisierung der Video-BGM-Funktion darin, einen Dienst dazu zu bringen, dass Videoinhalte im Hintergrund abgespielt und gleichzeitig die Oberflächen- oder Videoansicht korrekt gehandhabt werden. Wenn der Benutzer die Home-Taste drückt, geht die Oberflächen- oder Videoansicht automatisch verloren. Daher müssen wir zur Anzeige des im Hintergrund gestreamten Videos einen sekundären Bildschirm einsetzen. Das Flussdiagramm des Programms sieht wie folgt aus:
Abb. 8: Flussdiagramm für Hintergrund-Videostreaming
Um für einen sekundären Bildschirm eigene Inhalte zu erstellen, erweitern Sie die Klasse Presentation
und implementieren Sie den Rückruf onCreate()
. Geben Sie innerhalb von onCreate()
durch Aufruf von setContentView()
Ihre UI für den sekundären Bildschirm an. Die Klasse Presentation
stellt als Erweiterung der Klasse Dialog
den Bereich bereit, in dem Ihre Anwendung auf dem sekundären Bildschirm eine eigene UI anzeigen kann.
Es gibt zwei Methoden, um den sekundären Bildschirm für Ihre Präsentation anzugeben. Verwenden Sie entweder die DisplayManager
- oder die MediaRouter
-API. Die einfachste Methode zur Auswahl eines Präsentationsbildschirms stellt die MediaRouter
-API bereit. Der Media-Router-Dienst überwacht die auf dem System verfügbaren Audio- und Videopfade. Er empfiehlt den bevorzugten Präsentationsbildschirm, den die Anwendung für die Anzeige von Inhalten auf einem sekundären Bildschirm verwenden soll.
Hier sehen Sie, wie Sie mit dem Media-Router und getPresentationDisplay()
eine Präsentation auf dem bevorzugten Präsentationsbildschirm erstellen und anzeigen können.
MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE); MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(); if (route != null) { Display presentationDisplay = route.getPresentationDisplay(); if (presentationDisplay != null) { Presentation presentation = new MyPresentation(context, presentationDisplay); presentation.show(); } }
Eine weitere Methode zur Auswahl eines Präsentationsbildschirms ist die direkte Verwendung der DisplayManager
-API. Der Display-Manager-Dienst bietet Funktionen zur Auflistung und Beschreibung aller Bildschirme, die mit dem System verbunden sind, einschließlich derer, die sich für Präsentationen verwenden lassen.
Der Display-Manager überwacht alle Bildschirme im System. Mit getDisplays(String)
und der Kategorie DISPLAY_CATEGORY_PRESENTATION
können Sie die Bildschirme ermitteln, die sich für die Anzeige von Präsentationen eignen.
DisplayManager displayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); Display[] presentationDisplays = displayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION); if (presentationDisplays.length > 0) { Display display = presentationDisplays[0]; Presentation presentation = new MyPresentation(context, presentationDisplay); presentation.show(); }
Der Beispielcode für die Anzeige von Präsentationen steht Entwicklern im Android-SDK unter folgendem Pfad als Referenz zur Verfügung:
\sdk\sources\android-17\android\app\Presentation.java
Zusammenfassung
Neben dem Verkaufsargument, das „Intel Inside®“ für Smartphones und Tablets mit Intel® Architektur bietet, kann auch die Wireless-Display-Funktion ein attraktiver Pluspunkt sein. ISVs sollten dieser Technik Beachtung schenken und innovativere Nutzungsmodelle auf Basis der Wireless-Display-Technik entwickeln, insbesondere Differenzierungsmodelle für die Anzeige auf zwei Bildschirmen.
Referenz
- http://www.wi-fi.org
- http://developer.android.com/about/versions/android-4.2.html
- Wi-Fi_Display_Technical_Specification_v1.0.0
Copyright © 2013 Intel Corporation. Alle Rechte vorbehalten.
*Andere Marken oder Produktnamen sind Eigentum der jeweiligen Inhaber.