Mit diesem Blogpost möchte ich etwas Verwirrung um die Camera in Windows Universal Apps ausräumen.

Um es kurz zu machen: Man kann sehr wohl die Kamera in Windows Universal Apps ansprechen und Bilder aufnehmen!

Einzig “CameraCaptureUi” ist nicht auf Windows Phone verfügbar. Das ist die Klasse, die man standardmäßig in Windows Store Apps verwendet hat, um mal eben ein Bild zu knipsen – man bekommt, dann ein Standard UI, das man nicht weiter anpassen muss (und kann), die Verwendung davon ist also sehr komfortabel.

Das heißt aber nicht, dass man mit Windows Universal Apps keine Bilder aufnehmen kann! Das kann man sehr wohl und auch sehr leicht! Ich hab hier einen Schnipsel Code, der verdeutlicht, wie leicht es geht.

Ich würde sagen, der Code ist ausreichend dokumentiert, so dass ich mir weitere Erklärung spare. Einfach ein neues Universal App Projekt anlegen, Code reinkopieren und aufrufen. Falls Euch Namespaces fehlen, empfehle ich die Wunderwaffe “Ctrl+.” Dann wird alles automatisch hinzugefügt. Smiley Ihr benötigt lediglich im XAML noch irgendwo ein CaptureElement, das den Namen “Preview” trägt, um das Kamerabild anzuzeigen.

Hier der Code, schön dirty in einer einzigen Methode verpackt, der darauf  wartet als Quelle der Inspiration genutzt zu werden!

async private void CapturePic()
       {
           // Create MediaCapture and init
           var mediaCapture = new MediaCapture();
           await mediaCapture.InitializeAsync();

         
 // Assign to Xaml CaptureElement.Source and start preview
           Preview.Source = mediaCapture;
           await mediaCapture.StartPreviewAsync();

        
  // little Break
           await Task.Delay(3000);

           var imgEncodingProperties = ImageEncodingProperties.CreateJpeg();
           imgEncodingProperties.Width = 640;
imgEncodingProperties.Height = 480;

           // Create new file in the pictures library    
           var photoStorageFile = await KnownFolders.PicturesLibrary.CreateFileAsync
("photo.jpg", CreationCollisionOption.GenerateUniqueName);

           await mediaCapture.CapturePhotoToStorageFileAsync(imgEncodingProperties, photoStorageFile);

           await new MessageDialog("Pic Taken").ShowAsync();
       }