Windows Phone 8 ile telefonun koordinatlarını bulma

Windows Phone 8 SDK ile birlikte coğrafi konum API güncellendi, yeni API ile birlikte Geolocator sınıfı kullanımımıza açılmış oldu.

Windows Phone 7.5 SDK‘da yer alan GeoCoordinateWatcher sınıfı halen kullanımda, fakat özellikle Windows Phone 8 destekleyecek uygulamaların yeni Geolocator sınıfını kullanması tavsiye ediliyor.

Geolocator sınıfını kullanarak cihazın yerini bulmamız ve takip edebilmemiz mümkün.

Telefonun yerini bir defa bulmamız gerekiyorsa basitçe GetGeopositionAsync() methodunu çağırmamız yeterli.

Geolocator sınıfı ayrıca, PositionChanged event‘i sayesinde konumu takip edebilmemize de olanak sağlıyor.

Uygulama içerisinde konum bilgisini okuyabilmek için WMAppManifest.xml dosyasında Capabilities tabında yer alan ID_CAP_LOCATION kutucuğunu işaretlemiş olmamız gerekiyor.

Geolocator sınıfı Windows.Devices.Geolocation namaspace’i içerisinde tanımlıdır, kullanabilmek için öncelikle ilgili sınıfın using alanına eklememiz gerekiyor;

using Windows.Devices.Geolocation;</pre>

Ayrıca GetGeopositionAsync() method’u asenkron bir method olduğu için başına await anahtar kelimesini eklemeliyiz ve ilgili method’u async anahtar kelimesi ile işaretlemeliyiz;

private async void GetLocation()
{
    Geolocator locator = new Geolocator();
    Geoposition position = await locator.GetGeopositionAsync();
    Geocoordinate coordinate = position.Coordinate;
    lblLatitude.Text = "Lat : " + coordinate.Latitude;
    lblLongitude.Text = "Long: " + coordinate.Longitude;
}


Sonuçta aşağıdaki ekranı görmemiz lazım;

![](/assets/uploads/2013/07/GeoLocator.png)

Windows Phone uygulamalarını programatik olarak kapatmak

Windows Phone uygulamalarını programatik olarak kapatmak sıklıkla ihtiyaç duyacağımız bir şey değildir. Seyrekte olsa uygulamanızı programatik olarak sonlandırmak isteyebilirsiniz.

Özellikle bankacılık uygulaması gibi yüksek güvenlik gerektiren uygulamalarda, uygulamanın tamamen kapatıldığından emin olmanız gerekebilir.

Application.Current.Terminate();

Bu kod parçası sayesinde uygulamanızı komple kapatacaksınız. Back butonuna basarak uygulamanıza geri dönemeyeceksiniz.

Listedeki Her X'inci Elemanı Çekmek

Bu yazıda elimizdeki listenin her x’inci elemanını çeken extension method yazacağız.

Örneğin, bir ankete cevap veren katılımcılardan her 5000’inci katılımcıyı seçmek istediğimiz durumlarda böyle bir method’a ihtiyaç duyarız.

TakeEvery() extension method‘u, Language Integrated Query (LINQ) method’larından Skip() ve Take() gibi çalışacak, fakat listenin belli sayıda öğesini atlayıp, belli sayıda öğesini seçmek yerine, her x’inci elemanı seçecek.

İlk olarak TakeEverySample isimli projeyi oluşturalım;

IEnumerable<T> sınıfına TakeEvery() method’unu eklemek için projemize ExtensionMethods isimli sınıfı ekleyelim;

İlk olarak method’a geçilen parametrelerin değerlerini kontrol ediyoruz, eğer uygun olmayan bir değer verilmişse ilgili mesaj ile bir hata fırlatıyoruz.

list parametresinin enumerator‘unu GetEnumerator() method’u ile aldıktan sonra MoveNext() method’u ile liste üzerinde ilerliyoruz.

step değişkeni every değişkeninin değerine eşit olduğunda aradığımız kaydı bulmuşuzdur, ilgili kaydı geri döndürüyoruz.

Örnek kullanım;

Windows Phone 8 telefonu uzaktan kilitleme-silme-çaldırma

Windows Phone 8 kullanıyorsunuz ve önemli bir toplantıya girdiniz, telefonunuzu masanızda unuttuğunuzu farkettiniz. Çalışma arkadaşlarınızın telefonunuzu kullanarak adınıza email veya tweet atmasınından endişeleniyorsunuz. (Başıma geldiği için, ne kadar sıkıntı verici olduğunu biliyorum)

Hatta telefonunuzu kaybetmiş olabilirsiniz ve bulan kişilerin telefonunuzu kullanmasını istemiyorsunuz.

Windows 8 işletim sistemi kullanıyorsanız, telefonunuzu bilgisayarına bağlamışsınızdır mutlaka, Windows Phone uygulaması bilgisayarınızda kuruludur;

Uygulamayı başlatıp ekranın sağına doğru kaydığınızda, Kayıp telefon bulma kutusunu göreceksiniz;

Alternatif olarak internet tarayıcınızın ile Find My Phone adresini ziyaret edebilirsiniz.

İlk ziyaretinizde ekrana telefonunuzun markası, modeli ve verdiğiniz isim gelecek, yanında da Çaldır, Kilitle ve Sil linkleri yer alacak.

Linklerden herhangi birine tıkladığınızda telefonunuz ile ilgili bir defa yapmanız gereken ayarları içeren pencere karşınıza gelecek;

Gerekli alanları doldurduktan sonra Çaldır, Kilitle ve Sil linklerini kullanabiliriz.

Çaldır linkine tıkladığınızda ekranın altında bir bar belirecek ve gittikçe dolacak, benim durumumda yaklaşık barın yarısı dolduğunda telefonumdan tiz bir melodi duyulmaya başlandı;

Kilitle linkine tıkladığınızda, telefonunuz kilitlendiğinde ekranda belirecek mesajı belirleyebildiğiniz, kilidi açmak için kullanılacak şifre kombinasyonunu belirleyebildiğiniz ayar penceresi ekrana gelecek;

Gerekli alanları uygun şekilde doldurup Kilitle butonuna tıkladığınızda, ekranın altında bir bar belirecek ve gittikçe dolacak.

Bir noktada telefonunuzun kilitlendiğini ve eğer ayar penceresinde ilgili kutucuğu işaretlediyseniz tiz bir melodinin duyulduğunu farkedeceksiniz;

Kilidi açmak için ayar penceresinde belirlediğiniz kilit kombinasyonunu kullanmanız gerekmektedir.

Son olarak Sil linkine tıkladığınızda telefonunuzun fabrika ayarlarına döndürüleceğini, içerisindeki tüm ayarların, uygulamaların ve dosyaların silineceğini belirten bir uyarı gelecek;

Telefonumu ve içindeki uygulamaları sevdiğim için Eminim kutusunu işaretleyip bu noktadan öteye gitmedim. Eğer deneyen olursa yorumunu aşağıdaki yorum alanına bekliyorum.

Windows Phone 8 ekran çözünürlüğünü bulmak

Windows Phone 8, 3 farklı ekran çözünürlüğünü destekler; WVGA, WXGA, 720p

![](/assets/uploads/2013/06/480x800.png) **WVGA** 480 x 800 *15 : 9*
![](/assets/uploads/2013/06/768x1280.png) **WXGA** 768 x 1280 *15 : 9*
![](/assets/uploads/2013/06/720x1280.png) **720p** 720 x 1280 *16 : 9*
Eğer programatik olarak *ekran çözünürlüğünü* bulmak istiyorsanız, *App.Current.Host.Content* altında tanımlı olan ScaleFactor özelliğini kullanmanız gerekiyor; var cozunurluk = App.Current.Host.Content.ScaleFactor; Yukarıdaki örnek kodda, *cozunurluk* değişkenine *100* (**WVGA**), *160* (**WXGA**) veya *150* (**720p**) değerlerinden biri atanacaktır.

Engin Polat hakkında

Senior Software Engineer, @Microsoft

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 484

Creative Commons Lisansı