XAML Expertise: WPF, Silverlight, Windows Phone 8 und Windows-Store-Apps

Windows Phone 8.1: Bildschirmaufnahme über das ScreenCapture-API
Kommentare

In der Kolumne „XAML Expertise“ 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 Phone 8.1: Bildschirmaufnahme über das ScreenCapture-API“ .

Es gibt zahlreiche Möglichkeiten, die eigene App testen zu lassen. Eine wäre das Verteilen der App an ausgewählte Probanden, die ihr Feedback dazu abgeben. Die wirklichen Usability-Fallen entdeckt man auf diese Weise allerdings immer noch schwer. Eine bessere Variante wäre ein Test über den Emulator. Der Bildschirm sollte mit entsprechender Software aufgenommen werden, beispielsweise mit Camtasia Studio, Expression Encorder oder dem Microsoft Test Management Studio. Hierbei gibt es allerdings einen weiteren Nachteil: Der Proband benutzt die App nicht auf seinem gewohnten Gerät und damit auch nicht in seinem natürlichen Umfeld. Zur Abhilfe für dieses Problem hat Microsoft exklusiv für Windows Phone 8.1 das ScreenCapture-API integriert. Es ermöglicht eine Bildschirmaufnahme inklusive Ton über dem Mikrofon.

Windows Phone 8.1: Bildschirmaufnahme über das ScreenCapture-API

Das ScreenCapture-API befindet sich im Namensraum „Windows.Media.Capture“ und steht für die Windows Phone Silverlight 8.1 und die Windows Runtime zur Verfügung. Für den Einsatz müssen die nötigen Capabilities in der Package.appxmanifest-Datei gesetzt werden: Microphone, Pictures Library, Video Library und Webcam.

Das Erstellen von Videodateien funktioniert wie gewohnt über MediaCapture. ScreenCapture gibt hierbei lediglich die Video- und Audioinformation der aktuellen App. Diese werden dann der MediaCapture-Instanz zugewiesen. Die fertige Aufnahme liegt beispielsweise im Bilderverzeichnis. Eine leichtgewichtige Implementierung der Lösung steht in Listing 1.

Listing 1: Bildschirmaufnahme innerhalb einer WP-8.1-App starten
private MediaCapture _mediaCapture;

private async void OnRecordClick(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
  var screenCapture = ScreenCapture.GetForCurrentView();

  _mediaCapture = new MediaCapture();
  await _mediaCapture.InitializeAsync(new MediaCaptureInitializationSettings
  {
    VideoSource = screenCapture.VideoSource,
    AudioSource = screenCapture.AudioSource,
  });

  var file = await KnownFolders.SavedPictures.CreateFileAsync("Test.mp4", CreationCollisionOption.ReplaceExisting);
  await _mediaCapture.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Auto), file);
}

private async Task StopRecording()
{
  if (_mediaCapture != null)
  {
    await _mediaCapture.StopRecordAsync();
    _mediaCapture.Dispose();
    _mediaCapture = null;
  }
}

protected override async void OnNavigatedFrom(NavigationEventArgs e)
{
  await StopRecording();
}

Aufmacherbild: Hand holding smartphone via Shutterstock.com / Urheberrecht: Jaros

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -