WPF, Silverlight, Silverlight for Windows Phone und Metro Style Apps

Windows Store App: Videos auf der Xbox abspielen
Kommentare

In der neuen Kolumne „XAML Expertise“ des Windows Developer präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „Windows Store App: Videos auf der Xbox abspielen“.

Auf dem windowsdeveloper.de-Portal wurde vor Kurzem eine News zur Informatik-Tutorials-App veröffentlicht. Der Bericht erzählt, wie ich mit dem Gründer Benny Neugebauer Kontakt aufnahm und mit nur fünf Zeilen Code eine Xbox-Unterstützung implementierte. Das Zauberwort hierbei lautete PlayToManager. Mit diesem lassen sich jegliche Mediendateien auf externen Geräten wiedergeben. Die Xbox 360 muss dazu im Heimnetzwerk und mit nur wenigen Einstellungen integriert werden. Das Abspielen erfolgt dann über den Geräte-Charm. Der Zugriff auf den PlayToManager wird durch die Windows Runtime spielend leicht zur Verfügung gestellt, wie dieses How-to zeigen wird.

Zu Beginn müssen wir auf das Öffnen des Geräte-Charms reagieren (Abb. 1). Dazu bietet die PlayToManager-Klasse uns das passende SourceRequested-Event an. Auf der Seite, wo ein Video angezeigt wird, sollte dann das Event abonniert werden. Über die PlayToSourceRequestedEventArgs wird vom aktuellen MediaElement durch das PlayToSource-Property der Videoinhalt überreicht.

Bis das Video dann auf dem Gerät korrekt gestreamt wird, kann etwas Zeit vergehen. Etwas unschön wäre es, wenn schon einige Sekunden abgespielt wurden, bis das Video auf der Xbox zu sehen ist. Dazu wird mit der GetDeferral-Methode so lange das Abspielen pausiert, bis es durch die Complete-Methode wieder aktiviert wird (Abb. 2).

Der ganze Vorgang muss auch noch außerhalb vom aktuellen UI-Thread laufen. Daher muss die Logik innerhalb eines Dispatchers stattfinden. Wichtig dabei ist die Async-Await-Definition zu beachten. Listing 1 zeigt den dazugehörigen Sourcecode.

Listing 1

protected override void OnNavigatedTo(NavigationEventArgs e) {   PlayToManager.GetForCurrentView().SourceRequested += OnSourceRequested; }  protected override void OnNavigatedFrom(NavigationEventArgs e) {   PlayToManager.GetForCurrentView().SourceRequested -= OnSourceRequested; }  private async void OnSourceRequested(PlayToManager sender, PlayToSourceRequestedEventArgs args) {   await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>   {     PlayToSourceDeferral deferral = args.SourceRequest.GetDeferral();     args.SourceRequest.SetSource(mediaElement.PlayToSourc);     deferral.Complete();   }); }

Abb. 1: Geräte-Charm innerhalb der App öffnen

Abb. 2: Video über Xbox abspielen

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -