Makale Özeti

Her geçen gün kullanımı hızla artan smartphone ve pocket pc’ler için Microsoft tarafından geliştirilmiş olan en son mobile işletim sistemi sizlerinde bildiği gibi Windows Mobile 5.0’dır.Bu işletim sistemi sayesinde cep telefonları veya kullandığımız PDA lerden elde ettiğimiz verim kat kat artmış ve ayrıca biz yazılımcılar için bu platformlarda uygulama geliştirebilirlik ciddi oranda yükseltilmiştir.Önceden sadece C++ ile yapılabilecek (direkt olarak sistem kaynaklarına erişmek , device bazında işlemler vs.) işlemler PInvoke ile managed yani C# ve Vb.NET ile yazdığımız kodlar daha doğrusu .NET framework ile çalışan diller ile çağrılabilir kılınmış ve şimdide beklenen ya da olası dersek kanımca daha doğru olur direkt olarak managed code içerisinden yapılabilir hale getirilmiştir.

Makale

            Managed Code ile Telephony Native API'sinin Kullanımı

 

            Her geçen gün kullanımı hızla artan smartphone ve pocket pc’ler için Microsoft tarafından geliştirilmiş olan en son mobile işletim sistemi sizlerinde bildiği gibi Windows Mobile 5.0’dır.Bu işletim sistemi sayesinde cep telefonları veya kullandığımız PDA lerden elde ettiğimiz verim kat kat artmış ve ayrıca biz yazılımcılar için bu platformlarda uygulama geliştirebilirlik ciddi oranda yükseltilmiştir.Önceden sadece C++ ile yapılabilecek (direkt olarak sistem kaynaklarına erişmek , device bazında işlemler vs.) işlemler PInvoke  ile managed yani C# ve Vb.NET ile yazdığımız kodlar daha doğrusu .NET framework ile çalışan diller ile çağrılabilir kılınmış ve şimdide beklenen ya da olası dersek kanımca daha doğru olur direkt olarak managed code içerisinden yapılabilir hale getirilmiştir.Bu programcılar için müthiş bir gelişmedir.En nihayetinde şu açıdan bakmanızı öneririm ki , normalde platform invoke ile .NET'te yazdığınız kod içerisinden belirtilen dll'in ilgili fonksiyonu interoperability sayesinde rahatça çağrılabiliyorsunuz...Fakat , sizin o dll in yapısını ve içeriğinde ki bilmem kaç tane parametre alan fonksiyonu bilmeniz kaydıyla..Evet burda dikkat çekmek istediğim nokta şudur ki Managed code sayesinde code completion (Kod Tamamlama) kullanarak uygulamanızı hızlı bir şekilde yazıp geçebiliyorsunuz..Aslında .NET bize bu durumda bir iylik yapmış oluyor ve işletim sistemiyle olan bağlarını ya da bizim ihtiyaç duyduğumuz bazı sistem fonksiyonlarını kendi library’sinin içerisine koyarak programcıya hız katıyor..Şimdi daha önceden Native API olarak var olan Telephony yani kendi yazdığımız uygulama içerisinden istediğimiz kişiyi arayabilmenin nasıl gerçekleştiğine managed code ile  bir göz atacağız..

 

            Windows Mobile 5.0 ile telefonumuzun ( Pocket PC Phone Edition,Smartphone) temel özelliklerine müdahale etmemiz oldukça kolaydır.Bunu gerçekleştirebilmek için Microsoft.WindowsMobile.Telephony.Phone kütüphanesi Microsoft tarafından kullanımımıza sunulmuştur.Aslında kodları gördüğünüz de çok da basit bir şey olduğunu hemen anlayacaksınız..İlgili class’ın bize sunduğu Talk metodu (ki kendisini kod kısmında da göreceğiz ) sayesinde bu işlem managed code üzerinden kolayca gerçekleştirilebilir.İsterseniz lafı çok uzatmadan direkt olarak kod ve tasarım kısmına gidelim.

 

            Öncelikle şunu belirtmekte fayda var ki ben uygulamayı test amaçlı olarak smartphone üzerinde gerçekleştirdim..Ama Pocket PC Phone Edition üzerinde de sorunsuzca çalışacaktır.Bu arada belirtmeyi zorunluğu gördüğüm bir kısım var ki o da makaleyi yazmadan önce 2 platform da da denedim uygulamayı.Smartphone da hiç sorun çıkmazken Pocket Pc’de phone.dll bulunamadı diye bir hata aldım..Emulator’den CF 2.0 ı kaldırıp uygulama ile birlikte tekrar deploy ettim bu sefer sorun çıkmadı.Siz yinede herhangi bir sorunla karşılaşırsanız makalemin sonunda yer alan mail adresinden benimle irtibata geçebilirsiniz..İsterseniz basit bir şekilde aşağıda ki gibi bir ekran tasarlayalım..

 

 

                                                                                                         

 

 

            Daha sonra aşağıda ki resim de belirtilmiş olan 2 dll dosyasını projemizin referans kısmına ekleyelim..

 

 

                                                                                                         

 

 

            Daha sonra kod kısmına şunları yazıyoruz..

 

namespace testTelephoneForSP

{

    public partial class frmMain:Form

    {

        public frmMain()

        {

            InitializeComponent();

        }

 

        private void frmMain_Load(object sender,EventArgs e)

        {

            txtTelNo.SelectAll();

        }

 

        private void menuItem1_Click(object sender,EventArgs e)

        {

            try

            {

                Phone myPhn = new Phone();

                myPhn.Talk(txtTelNo.Text,true); // burada yer alan True parametresi opsiyonel olup girilmediği takdirde

                // herhangi bir uyarı çıkarmadan ekrana direkt olarak ekrandan girilen numarayı arayacaktır.

            } catch (Exception my)

            {

                MessageBox.Show("Hata! -- >"+my.Message);  // Herhangi bir hata olursa kullanıcıyı bilgilendiriyoruz..!

            }

        }

    }

}         

 

           

 

            Kod kısmı oldukça basit ve yalın.Şimdi isterseniz uygulamanın çalışan halini değerlendirelim..Görüldüğü üzere ilgili telefon numarası girildikten sonra Numarayı Çevir menüsünü tıkladığımızda kodlar da parametre olarak True değeri verdiğimiz confirm ekranı karşımıza çıkacaktır.

 

 

                                                                                 

 

 

            Eğer arama onayını kabul edersek ilgili numarayı emulatör üzerinden kullanıyor olsanız dahi arayacaktır.Ve sanki karşı taraf aramanıza cevap vermiş gibi işleme devam edecektir.(Bu noktada emülatörün hakkını vermek lazım..Mobil uygulama geliştirme konusunda uygulama geliştiricilere ayrı bir çığır açan Microsoft gerek SDK gerekse emülatörler uygulama geliştiricilerin proje geliştirme sürelerini ciddi anlamda azaltmıştır..Hatta şunu açıkca söleyebilirim ki cihazın kendisi olmadan sadece emülatör ile geliştireceğiniz uygulama %99 gibi yüksek bir oranla ( %1 tabi bilinmeyen bir sebep mutlaka çıkacaktır ama ben burda ki yüzde 1’lik kısmı geliştirilen uygulamaya ait grafiksel arayüzün ilgili cihazın ekranına birebir yerleşmeme ihtimaline vermek istiyorum tecrübelerime dayanarak..) sorunsuz çalışacaktır.)

 

 

                                                                                 

 

 

 

                                                                                 

           

 

Sonuç olarak önceki sürümlerde bu işlemi gerçekleştirebilmek için Native Code kullanmamız gerekirken (yazının başında açıkladığımız gibi) Windows Mobile 5.0 ın vermiş olduğu imkanlar sayesinde 1-2 satırlık bir kodla daha da önemlisi managed code ile gerçekleştirebiliyoruz..Sadece gelen yenilikler bununla da sınırlı değil.Daha sonra  ki makalelerimiz de yeri geldiğin de bu tarz yeni kolaylıkları sizlerle paylaşacağım.

 

Şimdilik bu kadar..Takıldığınız bir nokta olursa eralp.erat@savyazilim.com adresinden bana ulaşabilirsiniz..

 

Unutmayalım bilgi paylaşıldıkca değerlidir..

 

Eralp Erat

Mcp, Mcad.NET , Mcsd.NET

HIMS

www.eralperat.com