Tieffliegende Tropenfrüchte

Neue Funktionen in Windows Phone 7.5 – Teil 2
Kommentare

Nachdem wir uns in der letzten Ausgabe mit Mango im Allgemeinen befasst haben, ist es nun an der Zeit, sich den Spezifika im UI zuzuwenden. Für alle Quereinsteiger: Es geht dabei um eine neue Version von Windows Phone.

Von Microsofts großspuriger Ankündigung, Mango für Entwickler im Voraus zur Verfügung zu stellen, sieht man bis dato nicht viel. Wer also eines der mittlerweile etwa 200 britische Pfund (entspricht etwa 225 Euro) teuren Smartphones besitzt, kann damit noch nicht debuggen. Auf Konferenzen und Presseevents zeigt Microsoft abwechselnd ein Asus-Gerät und eine neue Maschine von HTC (die Mazaa ist eine aktualisierte Version des HTC Trophy, die neben einer schnelleren CPU/GPU auch eine 12-MP-Kamera enthalten soll). Laut Internetberichten bekommen ausgewählte Entwickler mittlerweile Asus E600 mit Mango im ROM. Der Grund für die Verwendung dieses zugegeben exotischen Geräts eines drittklassigen Hardwareherstellers liegt nach Ansicht des Autors darin, dass die ROMs nicht auf in freiem Umlauf befindliche Hardware „portiert“ werden können. Bis dato gibt es jedenfalls von XDA Developers kein inoffizielles Update für existierende Telefone wie das Samsung Omnia 7 des Autors.

Microsoft bietet zum Thema Kameras zwei durchaus gute Beispiele an, die hier Schritt für Schritt nachvollzogen werden. Die Codebeispiele finden sich hier. Als Erstes muss in jedem Fall im Manifest der Anwendung angegeben werden, dass das vorliegende Programm auf die Kamera zugreifen will. Das erfolgt mit der Capability-Definition . „Primitive Kameras“ geben ihr Sucherbild direkt auf ein in einem Formular enthaltenes ViewFinder-Steuerelement aus. Das wird in der xaml-Datei definiert (Listing 1). Danach wird eine globale Variable vom Typ PhotoCamera erstellt, die dann am besten über die OnNavigatedTo-Methode der Page aktiviert wird (Listing 2).

Listing 1


  
    
      
    
    

Listing 2

cam = new Microsoft.Devices.PhotoCamera();

cam.Initialized += new EventHandler(cam_Initialized);
cam.CaptureCompleted += new EventHandler(cam_CaptureCompleted);
cam.CaptureImageAvailable += new EventHandler(cam_CaptureImageAvailable);
cam.CaptureThumbnailAvailable += new EventHandler(cam_CaptureThumbnailAvailable);
cam.AutoFocusCompleted += new EventHandler(cam_AutoFocusCompleted);
cam.ButtonHalfPress += OnButtonHalfPress;
cam.ButtonFullPress += OnButtonFullPress;
cam.ButtonRelease += OnButtonRelease;

viewfinderBrush.SetSource(cam);  

An sich ist hier nicht viel Kompliziertes zu sehen. Als Erstes wird die globale Variable belebt und die von ihr abgefeuerten Events mit Handler-Routinen verdrahtet. Zu guter Letzt wird der ViewFinder mit dem Kamera-Objekt verbunden, sodass er sich dort die Bilddaten abholen kann. Als Beispiel für einen Event Handler wollen wir uns ShutterButton_Click ansehen. Er wird aufgerufen, wenn ein am Formular befindlicher Auslöseknopf voll durchgedrückt wird (Listing 3).

Listing 3

private void ShutterButton_Click(object sender, RoutedEventArgs e)
  {
    //Capture a still image. Events are fired as the thumbnail 
    //and full resolution images become available.
    try
    {
      cam.CaptureImage();
    }
    catch (Exception ex)
    {
      this.Dispatcher.BeginInvoke(delegate()
      {
        txtDebug.Text = String.Format(ex.Message);
      });
    }
  }  
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -