MehmetX.com

Windows Phone 7.1 Kamera Uygulamasi

4.11.2011 23:36:25 | Okunma Sayisi : 9274 | Yorum Sayisi : 3

Daha önce Windows Phone 7.0 Kamera Uygulaması makalesi yayınlamıştım. Bu makalede Windows Phone üzerindeki kamerayı kullanabilmek için CameraCaptureTask kullanmıştık. CameraCaptureTask ile kamerayı başlatabiliyor, resim çekebiliyor ve çekilen resmi Completed event' inde uygulamaya almak için yakalayabiliyorduk. Daha fazlasını yapma şansımız yoktu. Windows Phone 7.1 SDK ile telefonun kamerasıyla daha fazla entegre olup daha fazla işlemler yapabiliyoruz.  Kimi Windows Phone' lu telefonlarda tek kamera, kimilerinde de çift kamera bulunuyor. Telefonun arkasındaki kamera ana kameradır ve yüksek çözünürlük gibi özellikler bu ana kamerada bulunur. İkinci kamera ise ön taraftadır ve genellikle görüntülü görüşme için kullanılır, bu yüzden  arkadaki kamera kadar çözünürlüğü ve özelliği yoktur. 7.1 SDK ile kameranın müsait olup olmadığını kontrol edebiliyoruz.

Visual Studio 2010 ile yeni bir Windows Phone 7.1 projesi açalım.

Visual Studio 2010 --> New Project --> Silverilght for Windows Phone --> Windows Phone Application.

Projeye wp_7_5_camera ismini verdim. OK' e tıkladıktan sonra SDK seçim ekranı gelecektir, buradan 7.1 seçiniz.

Uygulamaya bir adet Button ve bir adet Border ekleyelim. Eklediğimiz kontrollere aşağıdaki gibi isimlendirelim

 

            <Button Name="btnBaslat"
                Content="Kamera Başlat" 
                Height="72" 
                HorizontalAlignment="Left" 
                Margin="6,6,0,0" 
                VerticalAlignment="Top" 
                Width="160" />
            <Border x:Name="Border1" 
                    BorderBrush="Black" 
                    BorderThickness="5" 
                    Margin="0,84,0,0">
                <Border.Background>
                    <VideoBrush x:Name="videoBrush1" />
                </Border.Background>
            </Border>

 

MainPage.xaml.cs dosyasını açalım ve sayfanın yukarısındaki using' lere aşağıdaki namespace' i ekleyelim.

 

        using Microsoft.Devices;

ve class seviyesinde aşağıdaki gibi bir nesne tanımlayalım.

 

        PhotoCamera kamera;

PhotoCamera class' ı, Windows Phone 7.1 telefondaki kamera(lar)a erişim sağlayacağımız class' tır.

Ekrandaki Kamera Başlat butonuna çift tıklayıp Click event' ini açalım ve btnBaslat_Click içerisindeki kodları aşağıdaki gibi düzenleyelim.

 

        private void btnBaslat_Click(object sender, RoutedEventArgs e)
        {
            if (PhotoCamera.IsCameraTypeSupported(CameraType.FrontFacing))
            {
                kamera = new PhotoCamera(CameraType.FrontFacing);
            }
            else if (PhotoCamera.IsCameraTypeSupported(CameraType.Primary))
            {
                kamera = new PhotoCamera(CameraType.Primary);
            }
            else
            {
                MessageBox.Show("Kamera bulunamadı!!!");
                return;
            }
            videoBrush1.SetSource(kamera);
        }

Metodun ne yaptığına bakacak olursak : 

  • IsCameraTypeSupported metodu, parametre olarak CameraType tipinde bir enum değeri ister. Bu enum içerisinde FrontFacing (ön kamera) ve Primary (ana kamera) isminde 2 seçenek bulunmaktadır.
  • IF ve ELSE IF içerisinde, telefonun Ön ve arka kamerayı destekleyip desteklemediğini kontrol ettik.
  • Ön kamerası varsa IF bloğundaki kodlar çalışacak ve PhotoCamera tipinde tanımladığımız kamera nesnesinin new ile instance' ı alınacak.
  • Önde kamera yoksa ELSE IF bloğu kontrol edilecek, arkadaki ana kamera kontrolü yapılacak, eğer varsa ELSE IF bloğundaki kodlar çalışacak ve kamera nesnesinin instance' ı alınacak.
  • new ile instance alınırken, her iki durumda da constructor' dan CameraType gönderiliyor, ön kamera için FrontFacing, ana kamera için Primary şeklinde. 
  • Eğer önde ve arkada kamera desteği yok ise ELSE bloğundaki kodlar çalışacak. MessageBox' ta uyarı gösterilip, return ile metottan çıkılacak.
  • ELSE bloğuna girilmez ise de son satır çalışacak, videoBrush1' e kamera nesnesi source olarak atanacak.

Uygulamayı emulator üzerinde çalıştırdığımızda, Kamera Başlat butonun tıkladıktan sonra karşımıza Windows Phone 7.0' daki gibi beyaz bir ekran içerisinde gezen siyah bir dörtgen görünecek. Temsili kamera görüntüsü.

Örnek uygulamanın kaynak kodlarını buradan indirebilirsiniz


3 Yorum

fatih 7.12.2011 02:31:34
visual studio 2010 ile acınca one or more projects in the solution were not loaded correctly hatası veryr
Mehmet YILDIZ 27.12.2011 22:34:00
Windows Phone 7.1 SDK' yı kurmanız gerekir.
Ömer UYGUN 26.05.2012 09:17:02
Merhabalar bloğunuzu yeni takibe aldım. WP7 hakkında bayağı bir makale yayınlamışsınız. Tebrikler. Kamera ya erişim deyince aklıma flasha nasıl erişebiliriz diye geldi? Bu sorunun cevabını verebilirseniz çok sevinirim. İyi Çalışmalar.



page-top