MehmetX.com

Windows Phone 7 Kamera Uygulamasi

2.07.2011 15:21:27 | Okunma Sayisi : 10191 | Yorum Sayisi : 4

Visual Studio 2010' da yeni bir Windows Phone Application açalım. Visual Studio 2010' da yeni bir proje açmak ve yeni proje ekranı hakkında detaylı bilgi için Windows Phone 7 ile ilk Uygulama makalemi okuyabilirsiniz. Projeye isimi olarak Windows_Phone_7_Kamera_Uygulamasi verebilirsiniz. Toolbox' tan bir adet Button ve bir adet Image kontolü ekleyelim. Image kontrolüne ekrandaki boş kalan alanı kapsayacak şekilde Width (uzunluk) ve Height (yükseklik) verelim. Button' un Content özelliğine Kamera Aç yazalım. Kodları yazmadan uygulama içerisinde kullanacağımız nesnelerin namespace' lerini (isim alanı) önce yukarıya eklememiz gerekmektedir. Eklememiz gereken namespace' ler Microsoft.Phone.Tasks ve System.Windows.Media.Imaging' dir. Aşağıdaki resimde de görüldüğü gibi.

resim yüklenemedi

namespace' leri ekledikten sonra Button' un click event' ini açıp, kodları aşağıdaki gibi düzenleyelim.

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            CameraCaptureTask kameraTask = new CameraCaptureTask();
            kameraTask.Completed += new EventHandler<PhotoResult>kameraTask_Completed);
            kameraTask.Show();
        }

        void kameraTask_Completed(object sender, PhotoResult e)
        {
             if (e.TaskResult == TaskResult.OK)
             {
                image1.Source = new BitmapImage(new Uri(e.OriginalFileName));
             }
        }

 

İlk satırda CameraCaptureTask nesnesinden instance aldık. CameraCaptureTask nesnesi uygulamamızın Windows Phone 7 içerisindeki built-in Camera uygulamasını başlatmasına izin veren nesnedir. Launchers ve Choosers makalemde bahsettiğim gibi Choosers Task' leri geriye veri döndürürler. Bu uygulamamızdaki CameraCaptureTask Chooser' ı bize çekilen fotoğrafı döndürecek. Döndürdüğü bu veriyi Completed event' iniden alacağız (Chooser Task' lerinden dönecek olan veriyi Completed event' lerinden çekeceğiz). Bir alt satırda da Completed event' ini açtık. Bu event, uygulamamız içerisinde kamera açılınca, fotoğraf çekildikten sonra ekrana gelecek olan Accept butonu tıklandıktan sonra tetiklenecektir. Tetiklenen bu event kameraTask_Completed metodunu çalıştıracaktır. Bu metodu açmak için kameraTask.Completed yazdıktan sonra += yazıp iki kere TAB tuşuna basabilirsiniz. kameraTask_Completed metodu içerisinde TaskResult' ı (görev sonucu) IF ile kontrol ettik. Eğer Task başarılı bir şekilde tamamlandı ise e.OriginalFileName özelliğinde çekilen resmin dosya adını aldık, bu dosyayı Uri olarak BitmapImage nesnesine verdik ve bunu da uygulamamız içerisindeki Image kontrolünün Source' una (kaynak) eşitledik. Yani çektiğimiz resmi Image kontrolünde görüntüledik. Uygulamamızı test etmek için çalıştıralım. Emülator içerisinde açılan uygulamamızdaki Kamera ismini verdiğimiz butona tıkladığımızda kameranın açıldığını temsil eden bir görüntü gelecektir. Beyaz bir dörtgen içerisinde dolaşan siyah bir dörtgen görünecek.

resim yüklenemedi

Bu ekranın sağ üst köşesindeki kırmızı çerçeveye aldığım butona tıklarsak uygulama fotoğraf çekecektir. Fotoğraf çekildikten sonra da karşımıza 2 adet buton gelecek. Solda Accept butonu ve sağda Retake butonu. Retake' e tıklarsak tekrar bir önceki ekrana dönecek ve tekrardan fotoğraf çekebilmemizi sağlayacak. Accept' e tıklarsak da çekilmiş olan fotoğraf uygulamamıza eklediğimiz Image kontrolünde görünecektir. İşte buradaki Accept butonuna tıkladığımız zaman kameraTask.Completed event' i tetiklenecek ve bu event de kameraTask_Completed metodunu çağıracak.

resim yuklenemedi

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


4 Yorum

Alper Ozhan 1.08.2011 16:30:37
Camera task emulatorden baska bir yerde calismamakta. WP 7.1'e kadar kullanamiyoruz.
fadime akdeniz 23.12.2011 12:55:06
merhaba ben mobil7 de çalışmaya yeni başladım ama microsoft.phone.task gibi daha bir çok kütüphane eklenmiyor neden kaynaklanıyor olabilir yardımcı olursanız sevinirim teşekkürler..
Ali YILDIZ 11.08.2012 19:07:40
Fadime hanım Windows Phone 7 eklentisi Visual studioda ekli olmayabilir.
Çağrı E. 4.07.2013 18:43:22
mehmetx nedir ya gece gece yerlere yattım :D



page-top