Windows Phone | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Windows Phone kategorisi için arşiv

Windows Phone 8 uygulamasında Accelerometer sensöründen veri okuma

29 January 2015 Yorum yapılmamış

Windows Phone cihazlar, cihazın hareketyönivme gibi çeşitli bilgilerini yazılımsal olarak algılamamıza yardım eden algılayıcılar (sensör) ile birlikte geliyorlar.

Accelerometer sensörü cihazın X, Y, Z eksenlerindeki ivme bilgisini algılar ve işletim sistemi aracılığıyla yazılıma iletebilir.

Öncelikle projenin References kısmında Microsoft.Devices.Sensors referansının olduğunu kontrol edelim ve sınıfın using kısmına Microsoft.Devices.Sensors namespace‘ini ekleyelim;

using Microsoft.Devices.Sensors;

Accelerometer sensörüne erişebilmek ve verisini okuyabilmek için Accelerometer sınıfından yeni bir instance oluşturmalıyız, bunun için static olan GetDefault() methodunu kullanabiliriz;

var _accelerometer = Accelerometer.GetDefault();

Sensör verisini bir defa okumak için _accelerometer değişkeninin GetCurrentReading() methodunu kullanıyoruz. Methoddan geri dönen AccelerometerReading tipindeki cevabın içerisindeki AccelerationX, AccelerationY, AccelerationZ property‘leri sayesinde ivme bilgisini elde edebiliriz;

var reading = _accelerometer.GetCurrentReading();
if (reading != null)
{
	var x = string.Format("{0,5:0.00}", reading.AccelerationX);
	var y = string.Format("{0,5:0.00}", reading.AccelerationY);
	var z = string.Format("{0,5:0.00}", reading.AccelerationZ);
}

Eğer ivme bilgisini sürekli okumamız gerekiyorsa _accelerometer değişkeninin ReadingChanged event’ini kullanabiliriz, Start() method’unu çağırmayı unutmamamız lazım;

_accelerometer.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(AccelerometerReadingChanged);

_accelerometer.Start();
public void AccelerometerReadingChanged(object sender, AccelerometerReadingEventArgs e)
{
	var x = string.Format("{0,5:0.00}", e.X);
	var y = string.Format("{0,5:0.00}", e.Y);
	var z = string.Format("{0,5:0.00}", e.Z);
}

Accelerometer verisine ihtiyacımız kalmadığında _accelerometer değişkeninin Stop() method’unu çağırmalıyız;

_accelerometer.Stop();

X, Y, Z eksenlerindeki değerler -2 ile +2 aralığında değişiyorlar. Yerçekimsiz ortamda değerlerin 0 olması bekleniyor. Eğer telefonu masa üzerine bırakırsak X ve Y değerleri 0, Z değeri -1 olarak okunmalı.

Start() methodu çağırıldıktan sonra yaklaşık olarak 50Hz hızında yani saniyede yaklaşık 50 defa ReadingChanged event’i tetiklenecektir.

Eğer ReadingChanged event’inin tetiklenme hızını değiştirmek istiyorsak _accelerometer değişkeninin ReportInterval property’sine yeni bir değer ataması yapmalıyız.

Son olarak, _accelerometer değişkeninin Shaken event’ini kullanarak telefonun sallanma durumunu yakalayabiliriz;

_accelerometer.Shaken += new TypedEventHandler<Accelerometer, AccelerometerShakenEventArgs>(Shaken);

Ankara BilgeAdam Etkinliği Ocak 2015

18 January 2015 Yorum yapılmamış

17 Ocak 2015 tarihinde, BilgeAdam Ankara şubesinde Muammer Benzeş ve Bora Kaşmer ile birlikte bir etkinlik organize ettik.

Ben de Win – Win – Win (Windows 8, Windows Phone 8 ve Windows Azure Uygulama Geliştirme) konulu bir oturum ile etkinlikte konuşmacı olarak yer aldım.

Etkinliği gerçekleştirmemizi sağlayan çok sevgili arkadaşım Seçkin Bedük‘e, etkinlikte benimle birlikte konuşmacı olarak yer alan Muammer Benzeş ve Bora Kaşmer‘e ve etkinliğe katılan tüm arkadaşlara teşekkür ederim.

Windows Phone 8 uygulamasında çekilen resmi crop ettirmek

05 December 2014 Yorum yapılmamış

Geçtiğimiz aylarda bir etkinlikle göstermek için geliştirdiğim demo uygulamasında kamera aracılığıyla resim çekmem gerekti. Fakat geliştirdiğim uygulama, çekilen resmin belli bir en x boy oranında olmasını gerektiriyordu.

Kamera aracılığıyla çekilen resmin istediğim en x boy oranına göre crop edilmesini ve uygulamama crop edilmiş halinin verilmesini sağlamalıydım.

Gayet basit bir şekilde aşağıdaki kod parçası aracılığıyla bunu sağlayabildim;

private void PickPhotoClick(object sender, RoutedEventArgs e)
{
	var _photoChooserTask = new PhotoChooserTask();
	_photoChooserTask.PixelWidth = 600;
	_photoChooserTask.PixelHeight = 300;
	_photoChooserTask.Completed += _photoChooserTaskCompleted;
	_photoChooserTask.Show();
}

Gördüğünüz gibi sadece PhotoChooserTask tipindeki değişkenin PixelWidth ve PixelHeight özelliklerine istediğim en x boy oranlarını atamam yeterli oldu.

Turkcell Teknoloji Zirvesi 2014 Etkinliği

13 November 2014 Yorum yapılmamış

Her yıl Turkcell tarafından organize edilen Turkcell Teknoloji Zirvesi‘ne geçen yıl olduğu gibi bu yıl da konuşmacı olarak katıldım. 12 Kasım 2014 tarihinde Yazılımcılar ve Girişimciler kategorisindeki Windows ve Windows Phone için Azure Destekli Uygulama Geliştirme konulu oturumumu Haliç Kongre ve Kültür Merkezinde Cibali salonunda gerçekleştirdim.

Beni etkinliğe davet eden Turkcell‘deki komiteye ve etkinliğe katılan tüm katılımcılara teşekkür ederim.

Windows Phone 8 uygulamasında SystemTray’e Progressbar eklemek

06 November 2014 1 yorum

Windows Phone 8 için geliştirdiğimiz uygulamada uzun süren bir işlem esnasında kullanıcıya işlemin hala devam ettiğini göstermek isteriz.

Mesela, haberler sayfasında güncel haberleri web service’ten çekerken veya kullanıcının ekranda doldurduğu formu web service aracılığı ile kaydederken işlemin devam ettiğini ekranda göstermek isteriz.

Bunun için telefonda ekranın en üstünde bulunan SystemTray‘e ProgressIndicator eklememiz yeterli. Bunun için istediğimiz sayfanın xaml dosyasını açmalı;

<phone:PhoneApplicationPage
	x:Class="ProgressIndicatorOrnek.MainPage"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
	xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
	xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
	xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
	mc:Ignorable="d"
	FontFamily="{StaticResource PhoneFontFamilyNormal}"
	FontSize="{StaticResource PhoneFontSizeNormal}"
	Foreground="{StaticResource PhoneForegroundBrush}"
	SupportedOrientations="Portrait" Orientation="Portrait"
	shell:SystemTray.IsVisible="True">

</phone:PhoneApplicationPage>

PhoneApplicationPage açılış ve kapanış tagları arasına aşağıdaki kod parçasını eklemeliyiz;

<shell:SystemTray.ProgressIndicator>
	<shell:ProgressIndicator IsIndeterminate="True" IsVisible="True" Text="Güncel haberler yükleniyor..." />
</shell:SystemTray.ProgressIndicator>

Böylece ilgili sayfa ekrana geldiğinde saatin de bulunduğu SystemTray alanında Güncel haberler yükleniyor… yazısı ile bir ProgressIndicator belirecek.