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

Arşiv

Etiketlenen yazılar location

Windows Phone 8 varsayılan harita uygulaması ile yol tarifi alma

21 August 2013 Yorum yapılmamış

Windows Phone 8 SDK ile birlikte gelen MapsDirectionsTask sınıfı sayesinde yol güzergahı hesaplatmak ve kullanıcıya göstermek çok kolaylaştı.

Start ve End özelliklerine uygun değerleri girerek iki nokta arasında yol tarifi alabilmek mümkün.

Bu özelliği denemek için ekrana bir buton ekleyelim;

<Button x:Name="btnMap" Content="Güzergah Hesapla" Height="140" Width="420" Click="btnMap_Click" />

Eklediğimiz Button‘un Click event‘ine bağladığımız method‘u yazalım;

var task = new MapsDirectionsTask();

task.End = new LabeledMapLocation("Kadıköy Rıhtım", new GeoCoordinate(40.990, 29.025));

task.Show();

MapsDirectionsTask sınıfından yeni bir instance çıkartıp, End özelliğine LabeledMapLocation sınıfından bir değişken atıyoruz.

GeoCoordinate sınıfının constructor‘ında varış noktasının koordinatlarını vermemiz gerekiyor, ben örnek olarak 40.990 ve 29.025 değerlerini verdim böylece Kadıköy Rıhtım‘a nasıl gidileceğini buluyor olacağız;

Start özelliğine değer atamadığımız için konum servisinden bulunan konumumuz kullanılacak ve End özelliğine verdiğimiz konum’a giden güzergah hesaplanarak ekranda bir harita ve altında liste şeklide gösterilecek;

Windows Phone 7 (WP7) Emulator Özellikleri

20 June 2012 Yorum yapılmamış

Windows Phone 7 (WP7) ile programlamaya başlangıç makalesi ile başladığımız Windows Phone 7 serisine Windows Phone Emülatör özellikleri ile devam ediyoruz.

Visual Studio 2010 ile New Project dialog penceresini açalım, Installed Templates kısmında yer alan proje şablon gruplarından Silverlight for Windows Phone‘u seçelim.

Sağ tarafa gelen proje şablonlarından Windows Phone Application‘ı seçip, projeye bir isim verelim ve OK butonuna tıklayarak projenin oluşturulmasını sağlayalım.

Proje oluşturulması sırasında Windows Phone 7 ve Windows Phone 7.1 (Mango) arasında seçim yapabileceğimiz bir dialog kutusu görmemiz lazım,

Proje oluşturulduktan sonra çalıştıracak olursak eğer, ilk olarak Windows Phone Emulator yüklenecek, ardından uygulamamız ekranda belirecektir.


Emulator penceresinin üzerine geldiğimizde beliren dikey toolbox‘ta çift ok butonuna tıklarsak eğer Additional Tools penceresi açılır;

Bu pencerede Accelerometer, Location ve Screenshot tablarına ulaşabiliriz. Accelerometer tab’ında, telefonun farklı şekillerde tutulduğu durumlarda uygulamanın nasıl gözükeceğini test edebiliriz.

Orientation kutusunda telefonun yatay veya dikey (Portrait Standing, Landscape Standing, Portrait Flat, Landscape Flat) duracağına karar verebiliriz.

Recorded Data kutusundan ise, telefonun sallanmasını simüle ettirebiliriz.

Ayrıca telefonun tam ortasında gözüken turuncu noktayı, sağa-sola-yukarı-aşağı oynatarak, telefonun farklı şekillerde tutulmasını da simüle ettirebiliriz.

Location tab’ında, uygulamanın GPS kullanımını test edebiliriz. Harita üzerinde birden fazla noktaya tıklayarak, telefonun sırası ile bu lokasyonlar arasında geziliyormuş durumunu simüle etmesini sağlayabiliriz.

Son olarak, Screenshot tab’ında uygulamanın o anda ekran görüntüsünü alabiliriz. Özellikle uygulamayı Marketplace‘e gönderirken birden fazla ekran görüntüsünün alınmasında fayda var.

Windows Phone 7 (WP7) ile programlamaya başlangıç

24 March 2012 2 yorum

Bu yazı dizisi ile birlikte Windows Phone 7 (WP7) uygulama geliştirme konusunu inceliyor olacağız.

WP7 uygulamalarını Visual Studio 2010, Expression Blend, Silverlight ve XAML gibi mevcut Microsoft araçları üzerine inşa ediyoruz.

WP7, uygulama geliştirmemiz için temel olarak iki framework sağlar;

  • Silverlight Framework
    Bu framework ile olay tabanlı (XAML sayesinde) uygulamalar geliştirebiliriz
  • XNA Games Framework
    Bu framework sayesinde, zengin 2D ve 3D oyunlar geliştirebiliriz

Windows Phone 7 Uygulama Geliştirme Gereksinimleri

Visual Studio 2010 kurulu bilgisayarımıza Windows Phone SDK 7.1 indirip kurmamız gerekiyor.

Windows Phone SDK 7.1 kurulumu sonrasında bilgisayarımıza aşağıdaki araçlar kurulmuş olacak;

  • Microsoft Visual Studio 2010 Express for Windows Phone
  • Windows Phone Emulator
  • Windows Phone SDK 7.1 Assemblies
  • Silverlight 4 SDK and DRT
  • Windows Phone SDK 7.1 Extensions for XNA Game Studio 4.0
  • Microsoft Expression Blend SDK for Windows Phone 7
  • Microsoft Expression Blend SDK for Windows Phone OS 7.1
  • WCF Data Services Client for Window Phone
  • Microsoft Advertising SDK for Windows Phone

Ayrıca Visual Studio 2010 kurulumumuza, New Project dialog penceresinden erişebileceğimiz yeni proje şablonları da eklenmiş oluyor.

Not : App Hub – Developer Resources sayfasından, hem ihtiyacımız olacak araçlara, hem de faydalı dokümanlara ulaşabiliriz.

Windows Phone 7 Mimarisi

MSDN‘de yer alan Application Platform Overview for Windows Phone makalesine göre, mimari şu şekilde;

WP7 mimarisinin 4 temel bileşeni;

  • Runtimes
    Silverlight ve XNA framework, optimize edilmiş uygulama oluşturmak için geliştiriciler için mükemmel bir ortam sağlar
  • Araçlar
    Visual Studio 2010 ve Expression Blend araçları kullanıcıya zengin uygulamalar tasarlamak ve geliştirmek için geliştiricilere esnek bir ortam sağlar
  • Cloud Services
    Windows ve SQL Azure, Notification Services, Location Services ve diğer 3. parti servis desteği ile geliştiricilere esnek bir geliştirme ortamı sağlar
  • Portal Services
    WP7 Market Place geliştiricilere, uygulamalarını yükleme ve sertifika yönetimi imkanı sağlar

Silverlight ve Windows Phone 7
Silverlight, XAML (Extensible Application Markup Language) dili ile uygulamalar ve basit 2D oyunlar geliştirmek için kullanılır. Geliştiriciler kolaylıkla Visual Studio veya Microsoft Blend gibi araçlar sayesinde XAML kodları üretebilirler.

XNA ve Windows Phone 7
XNA, temelde zengin 2D ve 3D oyunlar geliştirmek için kullanılır.

Market Place Sertifikasyon Süreci

Windows Phone 7 için geliştirdiğimiz uygulamaları, Market Place‘e göndermeden önce kontrol etmemiz gereken, WP7‘ye özgü maddeler vardır.

Bu maddelere MSDN‘de yeralan Application Certification Requirements for Windows Phone sayfasından ulaşabiliriz.

Donanım

Şu anda piyasada bulunan Windows Phone cihazları tek bir ekran çözünürlüğüne sahiptir (480 x 800). Yakın gelecekte çıkacak yeni versiyonların birden fazla ekran çözünürlüğünü desteklemesi bekleniyor.

Windows Phone cihazların ortak yönlerinden biri, ön yüzlerinde aynı butonların bulunmasıdır;


Geri Butonu sayesinde uygulamalar ekranlar arası geri dönüş işlevlerini sağlayabilirler. İnternet tarayıcılarda bulunan Geri butonu ile aynı işleve sahiptir. Uygulamanın açılış ekranında kullanılması durumunda, ilgili uygulamanın kapatılmasına sebep olur


Windows Butonu kullanıcının telefonun başlangıç ekranına dönmesini sağlar


Arama Butonu sayesinde kullanıcılar telefonun arama özelliğini çağırabilirler

Sensörler
Windows Phone 7 telefonlarda geliştiriciler için en çok öneme sahip sensörler;

  • WI-FI : telefonların internete bağlanmak için kullandıkları bağlantı noktalarından biridir. WP7 telefonlarda Internet Explorer tarayıcısı gelmektedir
  • Camera : WP7 telefonlar en az 5MP kamera ve flaş desteğine sahiptir. Uygulamalar kamerayı veri giriş aracı olarak kullanabilirler
  • Accelerometer : İvmeölçer sayesinde uygulamalar telefonun 3 koordinat düzlemine göre (X-Y-Z) tutuluş bilgisini öğrenebilir
  • GPS : GPS sayesinde uygulamalar, telefonun dünya üzerindeki konum bilgisini alabilirler

Visual Studio 2010 ile New Project dialog penceresini açalım, Installed Templates kısmında yer alan proje şablon gruplarından Silverlight for Windows Phone‘u seçelim.

Sağ tarafa gelen proje şablonlarından Windows Phone Application‘ı seçip, projeye bir isim verelim ve OK butonuna tıklayarak projenin oluşturulmasını sağlayalım.

Eğer tüm güncellemeleri yaptıysak, proje oluşturulması sırasında Windows Phone 7 ve Windows Phone 7.1 (Mango) arasında seçim yapabileceğimiz bir dialog kutusu görmemiz lazım

Proje oluşturulduktan sonra çalıştıracak olursak eğer, ilk olarak Windows Phone Emulator yüklenecek, ardından ilk uygulamamız ekranda belirecektir.

C# Programımızın Ekrandaki Yerini Hatırlaması

10 March 2010 2 yorum

C# ile yazdığınız uygulamanın her açılışta bir önceki kapatıldığı yerde açılmasını isteyebilirsiniz.

Aslında gayet basit olan bu işi yaparken düşünmemiz gereken bazı detaylar var. Mesela;

Ya uygulama kapatıldıktan sonra kullanıcı windows’un çözünürlüğünü değiştirdiyse?

Kullanıcı birden fazla monitör kullanıyorsa, ve uygulama kapatıldıktan sonra monitörlerin ayarlarını değiştirdiyse?

Hem bu noktaları gözönünde bulunduracak, hem de kolay şekilde programlanacak bir çözümü aşağıda kodladım;

Öncelikle formumuz kapatılırken, tam olarak bulunduğu noktayı bir yere kaydetsin. Bunu uygulamanın Settings penceresine iki tane özellik ekleyerek yapalım;

FormLocation ve FormSize

Formumuzun base class‘ı olan Form class‘ından gelen OnClosing virtual method’unu override edelim;

protected override void OnClosing(CancelEventArgs e)
{
	Properties.Settings.Default.FormLocation = this.Location;
	Properties.Settings.Default.FormSize = this.Size;
	Properties.Settings.Default.Save();

	base.OnClosing(e);
}

Uygulamamızın Settings penceresinden eklediğimiz property‘lere

Properties.Settings.Default

ile ulaşabiliriz.

Şimdi, form’umuzun base’den gelen OnLoad virtual method‘unu override edelim ve açıldığında eski yerine konumlanmasını sağlayalım;

protected override void OnLoad(EventArgs e)
{
	base.OnLoad(e);

	Point konum = Properties.Settings.Default.FormLocation;
	Size boyut = Properties.Settings.Default.FormSize;

	bool isOnScreen = false; /// Formun gözükür olup-olmadığını kontrol edelim
	foreach (Screen screen in Screen.AllScreens)
		if (screen.WorkingArea.Contains(konum))
			isOnScreen = true;

	if (!isOnScreen) ///Eğer formumuz görünür değilse, görünür yapalım
		this.SetDesktopLocation(Screen.PrimaryScreen.WorkingArea.Left, Screen.PrimaryScreen.WorkingArea.Top);

	if (boyut.Width < 10 || boyut.Height < 10) /// Formun boyutları çok küçükse, normal hale geri getirelim
		this.Size = new Size(300, 300);
}

Yukarıdaki kod parçalarını sizler de kendi uygulamalarınızda kullanabilirsiniz.

XNA – Oyun Temelleri

22 February 2010 2 yorum

XNA ile oyun geliştirmeye başlamadan önce, ekrana nasıl çizim yapabileceğimizi öğrenmemiz gerekiyor.

Not : Buradan ileriye devam etmeden önce XNA – Başlangıç yazımı okumanızı tavsiye ederim.

Öncelikle, ihtiyacımız olacak iki görseli bilgisayarınıza kopyalamanız gerekiyor;

Fil Resmi - Arkaplan olarak kullanılacak Arı Resmi

Solution Explorer‘da Content üzerine sağ tuşla tıklayarak ari.png ve fil.png dosyalarını projeye ekleyelim.

GameLoop.cs dosyamızda class seviyesinde Texture2D tipinde iki değişken oluşturalım;

Texture2D ArkaPlan;
Texture2D Ari;

Daha sonra bu değişkenlere resimleri yükleyeceğiz. Aynı yere bir tane de Rectangle tipinde değişken oluşturalım.

Rectangle OyunPencere;

Bu değişkene ekranımızın boyutlarını yüklüyor olacağız.

LoadContent() method’unda bu değişkenlerin değerlerini atayalım;

OyunPencere = new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height);
ArkaPlan = Content.Load<Texture2D>("fil");
Ari = Content.Load<Texture2D>("ari");

GameLoop class’ının constructor‘ında oyunumuzun başlığını değiştirebiliriz;

public GameLoop()
{
	this.Window.Title = "XNA - Oyun Temelleri";
	graphics = new GraphicsDeviceManager(this);
	Content.RootDirectory = "Content";
}

Draw() method’unda resimlerin ekrana çizim işlerini yapacağız. Çizime işlemlerini Begin() ve End() methodları arasında yapmamız gerekiyor;

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
spriteBatch.Draw(ArkaPlan, OyunPencere, Color.White);
spriteBatch.Draw(Ari, Vector2D.Zero, Color.White);
spriteBatch.End();

Bu durumda uygulamayı çalıştırırsak, karşımıza şöyle bir ekran gelir;

XNA Oyun Temelleri

Şimdi arı resmini, klavye tuşlarını kullanarak ekranda hareket ettirelim. Öncelikle arı’nın ekrandaki konumunu tutan bir değişkene ihtiyacımız var, class seviyesindeki değişkenlere ekleyelim;

Vector2 Location = Vector2.Zero;

Draw() methodunda ari resmini çizdiğimiz satırı güncelleyelim;

spriteBatch.Draw(Ari, Location, Color.White);

Son olarak Update() method’umuzu güncelleyelim;

protected override void Update(GameTime gameTime)
{
	KeyboardState ks = Keyboard.GetState();

	if (ks.IsKeyDown(Keys.Escape))
		this.Exit();

	if (ks.IsKeyDown(Keys.Up))
		Location.Y -= 3;
	if (ks.IsKeyDown(Keys.Down))
		Location.Y += 3;
	if (ks.IsKeyDown(Keys.Left))
		Location.X -= 3;
	if (ks.IsKeyDown(Keys.Right))
		Location.X += 3;

	base.Update(gameTime);
}

Gördüğünüz gibi, klavyede o anda basılı tuşları Keyboard.GetState() ile ks değişkenine yüklüyoruz, sonra basit karşılaştırmalar ile Location değişkenimizin X ve Y değerlerini değiştiriyoruz.

Draw() method’unda ari’yi çizeceğimiz yer olarak Location değişkenini verdiğimiz için, klavyeyi kullanarak ari’yi hareket ettirebildiğimizi görüyoruz.

XNA Oyun Temelleri

Oyunun kaynak kodlarını buradan indirebilirsiniz.