Windows Phone Nedir?
Bu yazı ile Windows phone 8 uygulama yazmak için gereken tüm adımları ve örnek uygulamaları anlatmayı düşünüyorum. Bu ilk dersimizde önce biraz tarih ve Windows phone nedir nasıl çalışır ondan bahsetmek istedim.
Yeni bir Windows Mobile sürümü için çalışmalar 2004 yılında “Photon” kod adıyla başlamıştı. Sonraları bu proje iptal edildi ve 2008 yılında, Microsoft Windows Mobile grubunu yeniden toplayarak yeni bir mobil işletim sistemi üzerinde çalışmalarına başladı. Ürünün Windows Phone adıyla 2009 yılında yayınlanması planlanıyordu fakat çeşitli sebeplerden dolayı Microsoft önceliği Windows Mobile 6.5’e verdi. Sonrasında, Windows Phone hızlı bir şekilde geliştirildi. Bu hızın getirdiği bir sonuç olarak, Windows Mobile uygulamaları geride bırakıldı ve yeni platformda eski Windows Mobile uygulamaları desteklemedi. (Microsoft)
Şekil 1- Windows Phone logosu
Windows Phone Nedir? Windows Phone, Microsoft tarafından akıllı telefonlar için geliştirilmiş olan bir mobil işletim sistemidir. Windows Mobil’den farklı olarak, kurumsal pazarı değil de tüketici pazarını hedef alan bir üründür. Ekim 2010’da pazara giren ürün ilk olarak Avrupa, Singapur, Avustralya ve Yeni Zelanda’da kullanıcılara sunuldu. Hemen ardından ABD, Kanada ve Meksika pazarına giren ürün, Aralık 2010’da PAL bölgelerinde ve 2011 başlarından itibaren de Asya’da kullanıcılar ile buluştu. Windows Phone ile birlikte Microsoft, Metro adlı yeni bir kullanıcı ara yüzü duyurdu.
Teknoloji Seçimi
Silverlight ve XNA
Windows Phone, geliştiricilere 2 ana programlama modeli sunuyor: Silverlight ve XNA.
Silverlight, ilk olarak web tarayıcılar için bir eklenti (plug-in) olarak tasarlandı. Amaç, zengin internet uygulamaları geliştirme sürecine yeni bir bakış getirmekti. Silverlight bizlere deklaratif bir kullanıcı arayüzü sundu. Kolayca oluşturulabilen ve temalandırılabilen bu arayüz, animasyon, veri bağlama (data binding), vektör grafikler ve çeşitli kontroller ile destekleniyordu. Silverlight’ın, Windows Phone tarafından kullanılmakta olan mevcut sürümü, Windows ve Mac üzerinde kullanılan güncel Silverlight sürümü ile aynı etkinliğe sahip. Fakat, telefon ile alakasız bazı özellikler kaldırılmış ve telefona özgü bazı şeyler eklenmiş. Ayrıca performans ayarlaması yapılmış durumda.
XNA, ilk olarak XBOX odaklı olarak tasarlanmış olmasına rağmen, ayrıca Windows, Zune HD ve tabii ki Windows Phone sürümleri de mevcuttur. XNA’in geliştirilme amacı yüksek performanslı, 2D sprite-based ya da 3D oyunlar oluşturmaktı.
Hangisini Seçmeli? İki model hakkında da genel fikir sahibi olduktan sonra, gelelim seçim yapmaya. Temel seviyede, geliştiricilere yapılan tipik tavsiyem şudur: “Uygulama geliştirirken Silverlight, oyun geliştirirken XNA kullanın.” Ama detaylar işin içerisine girdikçe, gerçek dünyada durum biraz daha farklı olabilir ve tercihler değişebilir.
İki model hakkında da genel fikir sahibi olduktan sonra, gelelim seçim yapmaya. Temel seviyede, geliştiricilere yapılan tipik tavsiye şudur: “Uygulama geliştirirken Silverlight, oyun geliştirirken XNA kullanın.” Ama detaylar işin içerisine girdikçe, gerçek dünyada durum biraz daha farklı olabilir ve tercihler değişebilir. (Microsoft Açık Akademi, 2013)
Şekil 2 – Silverlight logosu
Silverlight ile Oyun Geliştirmek
Kesinlikle Silverlight ile harika oyunlar yapabilirsiniz. Sonuç olarak oyun da bir programdır. Marketplace’te Silverlight ile geliştirilmiş “Darts” isminde mükemmel bir örnek bulabilirsin. Bu oyunun ilk sürümü Windows Phone Marketplace üzerinde yayınlandığında, çok kısa zamanda ücretli uygulamalar arasında 11. sıraya kadar yükseldi. Darts, XNA kullanan çok sayıda Xbox LIVE oyunu arasından sıyrıldı ve bu konuma yükseldi. Bir oyunu Silverlight ile kodlamak, geliştiriciye çeşitli avantajlar sağlar. Örneğin; Facebook ve Twitter gibi servisler ile kolay uyum ve bunun yanında, menüler ve skorboardlar gibi noktalarda tüm standart Silverlight kontrollerini kullanabilme yeteneği. Diğer yandan, Silverlight ile komplex oyunlar oluşturmaya çalışman, performans açısından çok akıllıca olmayabilir. 3D oyunlar da tabii ki konumuz dışında. Xbox LIVE özelliklerini, sadece XNA oyunları için kullanabilirsin.
XNA ile Oyun Geliştirmek
XNA kullanarak oyun dışında bir uygulama kodlayabilirsin fakat bunu denediğinde gerçekten ilginç bir iş yapmış olursun. Button ve ListBox gibi en temel kontrolleri yeniden yaratma ihtiyacının doğmasının dışında, XNA uygulamaları şu anda kullanıcının telefon teması, uygulama çubuğu (application bar), tarayıcı kontrolü (web browser control) ve benzeri çok sayıda özelliğin avantajlarından yararlanabilme yeteneğine sahip değildir. Ayrıca XNA için çok sayıda üçüncü parti kontrol kütüphaneleri (control libraries) mevcuttur.
Silverlight ile XNA ‘i Birlikte Kullanmak
Bir Windows Phone uygulaması içerisinde Silverlight ve XNA’in fonksiyonelliğini harmanlayabilirsin. Marketplace’te yer alan Silverlight uygulamalarının bir kısmı, mikrofonu kullanmak, ses efektleri çalmak gibi XNA fonksiyonelliklerinden de faydalanmıştır. Ayrıca XNA uygulamaları içinde bir web tarayıcı kullanılmamasına rağmen, Silverlight’ın ağ ile ilgili sınıflarını kullanarak bir web kaynağına talepte yapabilirsin. Bu konudaki tek kısıt, Silverlight arayüzü ile XNA arayüzünün aynı anda kullanılamamasıdır. Bir uygulama için seçilecek olan kullanıcı arayüzü, bu teknolojilerden yalnızca biri olabilir. Marketplace sertifikasyonu, Silverlight ve XNA’in uygun olmayan bir biçimde harmanlanmasını yasaklar! XNA kullanıcı arayüzü parçalarını, bir Silverlight uygulaması içerisinde kullanmanın bir yolunu bulup uygulamayı sorunsuz bir şekilde çalıştırmayı başarsan bile, iki arayüz birbirine karıştırıldığı için, Windows Phone Marketplace uygulamanızı onaylamayacaktır.
Bir Silverlight uygulaması içerisinde Microsoft.Xna.Framework.Game.dll ve Microsoft.Xna.Framework.Graphics.dll kütüphanelerini referans etmediğiniz sürece sorun yok. Silverlight ve XNA arasındaki ilişki, olması gerektiğinden çok daha karışıktır. Bu durum, Silverlight tarafındaki hedef ile XNA tarafındaki hedeflerin birbirine oldukça uzak olmasından kaynaklanmaktadır. • Windows Phone için geliştirilen Silverlight altyapısının, Windows ve Mac için geliştirilen Silverlight’a mümkün olan en yüksek ölçüde uyumlu olması arzulanıyor. XNA tarafındaki hedef ise Windows Phone’un XBOX, Windows ve Zune HD için olan XNA ile olabildiğince uyumlu olmasıdır.
Sonuç olarak iki tarafın hedefleri doğrultusunda bazı fonksiyonellikler platformda zorluk çıkarmaktadır. Bu riskten dolayı ve aralarındaki belirgin farklılıklar sebebi ile iki teknolojinin iyi ilişki içerisinde olduklarını söyleyemeyiz. Örneğin; Windows Phone mikrofon ile haberleşmek için tek bir sınıfa sahiptir ve bu bir XNA özelliğidir. Bu sınıf, bir XNA kütüphanesi içerisinde yer alır. Çünkü XNA’in daha önceden geliştiricilere sunmuş olduğu, eski sürümler ile olan uyumluluğun korunması hedeflenmiş.
Geliştirme Ortamını Hazırlamak
Kullanılacak Yazılım Gereksinimleri
- Geliştirme ortamını kurmak için Windows 8 veya 8.1 işletim sistemi
- Windows Phone Yazılım Geliştirme Kiti (SDK) 8
(http://developer.windowsphone.com adresinden ücretsiz indirilebilir.)
Paket içerisinde:
-
Windows Phone için Visual Studio 2013 Express (Silverlight uygulamaları geliştirmek için kullanacağız)
-
Windows Phone için Expression Blend 5 (Silverlight-tabanlı vektör grafikler, animasyonlar ve kontrol şablonları tasarlamak için alternatif olarak kullanabilirsin)
-
XNA Game Studio 4.0 (XNA uygulamaları ve oyunları geliştirmek için kullanabiliriz)
- Windows Phone Emulator (Uygulamalarını gerçek bir telefon yerine bilgisayarda çalıştırıp test etmek için ihtiyacımız olacak)
- Silverlight for Windows Phone Toolkit (http://silverlight.codeplex.com adresinden ücretsiz indirebilirsin) Bu kit, çok sayıda kontrol içerir.
- Silverlight Toolkit (http://silverlight.codeplex.com adresinden ücretsiz indirebilirsin) Chart ve Graph gibi, Windows Phone ile kullanılabileceğin ek kontroller içerir.
Eğer Visual Studio’nun daha üst bir sürümünü kullanıyorsan, SDK ile gelen Express sürümü kullanman gerekmiyor. SDK’nın kurulumu, Windows Phone’a özgü özellikleri diğer sürümlere de kurar. Visual Studio’nun Express sürümü ile ücretli sürümleri arasındaki farkların Windows Phone uygulaması geliştirmek için bir etkisi yoktur. Şu anki SDK sürümü, yalnızca C# ve XAML ile uygulama geliştirmene izin veriyor. Fakat Windows Phone için Silverlight uygulamaları geliştirirken, Visual Studio Professional ve üzeri sürümler için eklenti indirerek C# diline alternatif olarak Visual Basic de kullanabiliriz. (Microsoft)
Burada bahsettiklerimiz dışında, ücretli olan çeşitli Windows Phone uygulama geliştirme araçları da vardır.
Bunlardan iki tanesi şunlardır:
- Silverlight Spy (http://firstfloorsoftware.com/silverlightspy) Uygulamanızın element tree’sini inceleyip düzenlemene imkân verir. Ayrıca, Isolated Storage içeriğini incelemene izin verir.
- Runtime Intelligence for Windows Phone (http://preemptive.com/windowsphone7) Karıştırma, optimization, ve analitik imkanı verir.
Şekil 4 – Kurulması gereken 3 önemli program
Kullanılacak Donanım Gereksinimleri
Yazılım gereksinimlerinde listelenmiş uygulamaları çalıştırabilecek bir bilgisayara ihtiyacın olacak. Teknik olarak zorunlu bir ihtiyaç olmamasına rağmen, Windows Phone Marketplace’e göndermeyi düşündüğün uygulamaları gerçek bir Windows Phone cihaz üzerinde test etmen de faydalı olacaktır.
Bir geliştirici olarak, uygulamalarımı test etmek için hangi telefonu almalıyım?
Elindeki telefonun hangi marka veya hangi model olduğunun önemi yok, içindeki işletim sistemi Windows Phone olsun yeter. Telefondaki bazı faktörlerin çeşitliliğine rağmen, geliştiricilere sunulan fonksiyonellik tutarlıdır. Örneğin, bazı telefon modelleri diğerlerinden daha farklı kameraya sahip olmasına rağmen, kamera ile etkileşim için kullanılan yol her zaman aynıdır. Diğer yandan elbette, belirli bir markanın, donanıma özgü özelliklerden faydalanacak bir uygulama yazamazsın. Telefon modelleri arasındaki en belirgin fark, donanımsal (fiziksel) bir klavyenin varlığı/yokluğu ya da telefonun üzerinde nerede yer aldığıdır. Klavye ile etkileşimin nasıl çalıştığını bildiğinizde, fiziksel klavyesi olmayan bir telefonla bile testleri yapabileceğinizi öğreniyorsun. Ayrıca emülator, fiziksel klavye emülasyonu için bir seçenek sunuyor. Zaman geçtikçe telefonların işlemci güçleri artıyor, uygulamanızın yeterince hızlı çalışıp çalışmadığını test etmek için son model telefonlar üzerinde test yapmaktan kaçınman faydalı olacaktır. 480×800 pixellik ekran çözünürlüğü Windows Phone 7 telefonlar arasında yaygın olmasına rağmen, farklı model telefonlarda ekranın fiziksel boyutları farklılık gösterebilir. Fiziksel ölçümlere dayanan işlemlerde bu bilgiyi göz önünde bulundurman faydalı olacaktır. Örneğin; bir cetvel uygulaması. SDK ile gelen emulatör birçok şeyi test etmek için iyidir, fakat emule edemediği bazı özellikler var. Birkaç örnek vermek gerekirse; Accelerometer verilerini test etmek için kullanışlı bir yol sunamıyor. Telefon ekranına yapılan çoklu dokunma deneyimini simüle etmek için bir imkân sunmuyor. Bu testleri yapabilmek için Multi-touch PC kullanmak gerekiyor. FM radyo ayarlama testlerine imkân vermez. Emulatör testlerinde, uygulamanın fiziksel telefon üzerindeki performansını öngörmek mümkün değildir. Çeşitli faktörlere bağlı olarak, bir uygulama bazen emülatörde daha hızlı çalışır, bazen ise oldukça düşük bir performans sergileyebilir. Yapacağın performans iyileştirmelerini emulatörde gözlemleyebilirsin fakat hiçbir şey gerçek bir telefonun yerini tutmayacaktır.
Uygulamaları Gerçek Bir Telefonda Test Etmenin Faydaları
Dokunmatik hedeflerin çok küçük, birbirine çok yakın veya ekranın kenarlarına çok yakın olmadığından emin olmak için, uygulamaları gerçek bir telefon üzerinde çalıştırmak faydalıdır. Örneğin, tasarlayıp emulatör üzerinde test ettiğin bir oyunda, pratikte gerçek telefon üzerinde oyun oynanırken kullanıcının parmağının ekrandaki önemli bilgileri bloklayabileceğini önceden düşünememiş olabiliriz. Bu açıdan, Windows Phone Marketplace üzerine yalnızca emulatör üzerinde test etmiş olduğumuz uygulamaları göndermek risklidir. Pratikte de testleri yapmamız gereklidir.