Windows Phone İçin Yararlı Cheat Sheetler

Benim düşünceme göre, bir cheat sheet yani kopya kâğıdı iyi hazırlandığı zaman yazılım geliştirmeye biraz bulaşmış birisi için sayfalarca dokümandan yeğdir. Windows Phone üzerinde geliştirme yaparken işe yarayacak bu hızlı referans dokümanları topladım.

Microsoft Windows Phone API QuickStart

 

Native’de dahil olmak üzere WP için API listesini ve bunun alışıl olduğumuz .net ortamlarına ne kadar yakınlıkta olduğunu gösteren poster formatında profesyonel çıktıya hazır bir doküman.

İndirme Adresi : http://bit.ly/T0sGDj

 

ModernUI Apps

 

Windows Phone 7 ve 8 için arayüz geliştirirken gerekli olacak bilgileri barındıryor. Özellikle ezberleme imkanı olmayan yazı tipi ile çıkartılabilen simgeler için oldukça kullanışlı.

 

İndirme Adresi : http://bit.ly/133PZm0

Theme Resources Quick Reference Sheet

Kabul edelim bunu saklamayalım biz yazılımcılar tasarım konusunda çok kötüyüz! Bu yüzden bir ortam için yazılım geliştiriyorsak, o ortamın sağladığı temaların ötesine geçmemeliyiz. Bu hem bizim yapacağımız kırmızı üzerine mor gibi kötü seçimlerin hem de uygulamanın cihaz ile uymsuz görünmesinin önüne geçecektir. Bu doküman WP’nun sağlamış olduğu hazır tasarım sınıflarının isimlerini bir liste halinde veriyor. Oldukça yararlı.

 

İndirme Adresi : http://bit.ly/117VJKI

 

 

Developing a Silverlight Application for Windows® Phone 7

 

Biraz eski bir doküman fakat hala işe yarar ve DZone Refcardz bu işte oldukça başarılı.

İndirme Adresi: http://bit.ly/12UZO9c

 

Controls and Toolkits ve Live Tiles

 

Burada iki adet doküman var ve WP7 ile sınırlılar. Ama WP8 içinde hala geçerli oldukları için listenin sonuna ekliyorum kendilerini.

 

İndirme Adresleri:

 

Windows Phone HTML Uygulamalarda Merhaba Dünya

 

XAML uygulamalara merhaba demiştik. Daha önce Silverlight/WPF tecrübeniz olmayabilir. Normalde Windows platformu dışında çalışıyorsunuzdur ama sizden WP8 platformu içinde bir uygulama geliştiriyor olmanız istenmiş olabilir. Aslında daha sonra değineceğimiz Phone Gap isimli bir ürün tam da bu sorunu çözüyor ama biz böyle bir çözümün olmadığını varsayıyoruz. Ya da tasarımcınız HTML üstadıdır ve kısıtlı vakitte bir Windows Phone 8 uygulaması geliştiriyor olmanız gerekiyordur. Ya da… Tamam, bir durumdan dolayı uygulamanızın HTML 5 ile geliştirmeniz gerekiyor.

Yine detaylara inmeden yalnızca “merhaba” yazmak amacıyla proje şablonlarımızdan HTML 5 şablonunu seçerek işe başlıyoruz.

 

Proje ilk açıldığında “E bu normal XAMLlı uygulama” diyebilirsiniz. Haklısınız da. Aslında HTML 5 uygulaması normal uygulama içerisindeki bir tarayıcı içerisinde çalışıyor. Ama normal tarayıcıdan farklı olarak hem c# metotlarına erişebiliyor (dolaylı) hem de telefonun özelliklerine erişebilen javascript kodlarını çalıştırabiliyor.

XAML koduna baktığımızda tarayıcımızı oluşturan etiketler şe şekilde gözükmekte :

 


<phone:WebBrowser x:Name=”Browser”


HorizontalAlignment=”Stretch”


VerticalAlignment=”Stretch”


Loaded=”Browser_Loaded”


NavigationFailed=”Browser_NavigationFailed” />

Güzel, demek ki uygulamamızı gösterecek arkadaş bu. Peki bu nesne hangi html uzantılı dosyayı çalıştırıyor ve bunu nereden çalıştıracağını nasıl biliyor? Uygulamamızın açılış ekranı olan MainWindow’un kod tarafına geçtiğimizde ilk göze çarpan sınıf içerisinde MainUri şeklinde html dosyamızın yolunu tutan bir string olacak.

private
string MainUri = “/Html/index.html”;

Bu string’i kim nasıl kullanıyor diye baktığımızda zaten her şey bir anda aydınlacak. Bu string in ilk kullanıldığı metot :


private
void Browser_Loaded(object sender, RoutedEventArgs e)

{

Browser.IsScriptEnabled = true;

 


// Add your URL here

Browser.Navigate(new
Uri(MainUri, UriKind.Relative));

}

Metodun adından anlıyoruz ki bu tarayıcı nesnesi yüklendiğinde bu adresi açacak. İyi de metodun adının o olması o işi yaptığını belirtmek ki. Bu yazı içinde birkaç satır yukarıya bakıyoruz ve XAML tarafında tarayıcımızın Loaded olayı için Browser_Loaded metodunun bağlandığını görüyoruz.

Peki nerede bu “index.html” ? Visual Studio içerisinde Solution Explorer ile string de yazdığı gibi Html klasörünün altına baktığımızda kendisi bizi selamlıyor.

O halde, bizim şimdilik ne MainPage.xaml ile ne de MainPage.xaml.cs ile işimiz yok diyip bu pencereleri kapatıp “index.html” dosyasını açıyoruz.

Karşımıza basit bir HTML 5 yapısı çıkıyor.

<!DOCTYPE
html>

<html>


<head>


<meta
http-equiv=”Content-Type”
content=”text/html; charset=UTF-8″
/>


<link
rel=”stylesheet”
type=”text/css”
href=”/html/css/phone.css”
/>


<title>Windows Phone</title>


</head>


<body>


<div>


<p>MY APPLICATION</p>


</div>


<div
id=”page-title”>


<p>page title</p>


</div>


</body>

</html>

 

Bir düğme ve “Merhaba Dünya”

 

Daha önce web tasarımıyla uğraşıp buralara gelenler için eve dönüş gibi bir his olsa gerek. Şimdi, kod sayfamı tasarım durmuna geçirip toolboxdan button nesnesini tasarım alanına sürükleyip bırakıyorum.

Sürükleme işini yapınca düğmeye ait HTML kodu otomatik olarak oluşturuluyor.

<input
id=”Button1″
type=”button”
value=”button”
/>

 

Fakat bu düğmeye tasarım alanında çift tıkladığımızda yalnızca HTML karşılığına gitmiş oluyoruz.

Artık JavaScript yazmanın zamanı geldi. Burada web’den farklı bir durum yok. Düğmeye tıklandığında çalıştırılacak kodu ayrı bir javascript dosyasında, script tag’i içinde ya da satır içi (inline) olarak input tagi içinde yazabiliriz. Ben en ortadaki yöntemi seçerek bir script tagi ekliyorum. Bir metot yazıyorum ve düğmenin tanımında Click olayında bu metodu çağırması gerektiğini belirtiyorum. Arayüz kodumun son hali:

<!DOCTYPE
html>

<html>

<head>


<meta
http-equiv=”Content-Type”
content=”text/html; charset=UTF-8″
/>


<link
rel=”stylesheet”
type=”text/css”
href=”/html/css/phone.css”
/>


<title>Windows Phone</title>

</head>

<body>


<div>


<p>MY APPLICATION</p>


</div>


<div
id=”page-title”>


<p>page title</p>


</div>


<p>


<input
id=”Button1″
type=”button”
value=”button”
onclick=”DugmeyeTiklandi()
/>


</p>

 


<script
type=”text/javascript”>


function DugmeyeTiklandi() {

alert(“Merhaba”);

}


</script>

</body>

</html>

 

Uygulamayı çalıştırıp düğmeye bastığımızda sonuç:

 

 

XAML örneğinden farklı olarak bu uygulamada düğmenin stilinin tasarım ile uyumsuz olduğunu ve uygulamanın ekrana tam oturduğu halde çekiştirilebildiğini fark edeceksiniz. Yakında o konulara da değinmek üzere J

WP 8 XAML Uygulamalarda Merhaba Dünya

Windows Phone 8 üzerinde çalışma ortamımızı hazır hale getirdikten sonra hemen bir uygulama geliştirmek lazım. Başlangıcı en kolay ve en çok kullanacağımız XAML uygulamalara ayırmak şaşırtıcı değil. Daha önce Silverlight veya WPF ile uygulama geliştirmişseniz sizi hiç yabancı bir platform beklemiyor. Yeni bir programlama veya işaretleme dili olmadığı için dakikalar içerisinde Silverlight ile neler geliştirebiliyorsanız Windows Phone 8 içinde geliştirebiliyor oluyorsunuz. O yüzden bu yazının ortalarını sıkıcı olacaktır. Yeni başlayanlar için fazıla detaya girmeden anlatayım yine de.

XAML Uygulamaları basit oyunlarda dâhil olmak üzere hemen her türden uygulamaları geliştirmek için kullanacağız. Bu türden bir uygulama geliştirmek için, kullanmak istediğimiz programlama dilinin (C# veya Vb.net) altındaki şablonlardan “Windows Phone App”‘ı seçiyoruz.

Seçimden sonra hangi Windows Phone platformunu hedef olarak uygulama geliştireceğimiz sorulacak. Şu an için WP 7 ve WP 8 seçenekleri karşımıza çıkacak. WP 7 seçeneği seçecek olursak uygulamamız hem WP 7 hem de WP 8 cihazlarda çalışacak fakat WP 8′e özel yeteneklerini yitirecek. Biz WP 8 i seçiyoruz ve karşımıza örnek bir proje çıkıyor:

Ara yüzümüzü tanıyalım.

  1. Ara yüzde yaptığımız değişiklikleri tıpkı bir web editöründe olduğu gibi görmemizi ve görsel olarak düzenleyebilmemizi sağlayan ön izleme alanı.
  2. Ara yüzümüze XAML kodunu yazacağımız alan. Bu kısımda yalnızca ara yüzü şekillendiren kodlar bulunur. İşleyiş ile ilgili kodlar C# veya Vb.net kod dosyalarında bulunur.
  3. Proje dosyalarımızı göreceğimiz alan.
  4. Projemizi test/debug amacıyla çalıştıracağımız düğme. Buradan uygulamayı bir emulator veya cihaz üzerinde mi deneyeceğimizi seçebiliriz. Ayrıca emulator de farklı çözünürlüklerde uygulamamızı kontrol edebiliriz.

     

Bir düğme ve “Merhaba Dünya”

 

Arayüze düğme eklemek için bir çok yol var, Windows Forms’da olduğu gibi toolbox üzerinden tasarım ön izleme alanına sürükle bırak yöntemi klasik bir başlangıç yapılabilir.

Sürükleme işlemi bittiğinde XAML bölümünde ara yüze eklediğimiz düğme için aslında yazıyor olmamız gereken ifadenin otomatik oluşturulduğunu görebiliriz.(Windows Forms, WPF, Silverlight da olduğu gibi)

Bu düğmeye tıklandığında yapılacak işlemi belirlemek için basitçe ön izleme alanında düğmeye çift tıklayabiliriz. Bunu yaptığımızda otomatik olarak kod tarafında ilgili düğmenin “click” olayı için bir metot oluşturulacak, tasarım tarafında button’un click olayında oluşturulan bu metodun çağrılması gerektiği otomatik olarak yazılacaktır.

Uygulamanın CS Tarafında Oluşturulan metot:


private
void Button_Click(object sender, RoutedEventArgs e)

{

 

}

XAML tarafında düğmemizin son durumu:

<Button Content=”Button” HorizontalAlignment=”Left” Margin=”67,91,0,0″ Grid.Row=”1″ VerticalAlignment=”Top” Click=”Button_Click”/>

 

Bu durum daha önce Silverlight veya WPF ile uğraşmadıysanız bile JavaScript’den tanıdık gelecektir. .net tarafında çok iyi bildiğimiz bildirim kutusunu düğmemizin tıklanma olayına yazarsak selamımızı bitirmiş olacağız.

Metodumuza son halini veriyoruz ve uygulamayı çalıştırıp düğmeye basıyoruz.


private
void Button_Click(object sender, RoutedEventArgs e)

{


MessageBox.Show(“Merhaba”);

}

 

Windows Phone 8 Çalışma Ortamının Hazırlanması

Windows Phone 8 Uygulama Türleri

Farklı düzeydeki uygulamalar için 5 farklı uygulama türü sunulmaktadır. Bu türler:

XAML Uygulamalar

Özünde birer Silverlight uygulaması olan bu tür hedef alınarak, C# ve VB.Net kullanarak ağır grafik işlemleri haricindeki her türden uygulama geliştirilebilir.

HTML 5 Uygulamalar

Arayüzde işaretleme dili olarak XAML yerine HTML 5 kullanabileceğiniz proje şablonu. Daha çok multiplatform uygulamalarda tercih sebebi olacaktır. Bu uygulama türü aslında standart XAML uygulamanın içerisinde bulunan bir web tarayıcı ile sağlanmaktadır.

Direct 3D / Native Uygulamalar

WP 8 de 7. Sürümden farklı olarak oyun ve diğer ağır grafik işlemleri isteyen uygulamalar için D3D desteği bulunmakta. Bu uygulamalar C/ C++ kullanılarak geliştirilmekte. Evet, bu tür ile de RSS okuyup ekranda göstermeniz mümkündür. Fakat hem c / c++ seviyesine iniyorsunuz hem de ortada bir label bile yok.

Mixed Mode Uygulamalar

XAML uygulamalar ve native uygulamalar arasında köprü niteliğinde bir proje template’i oluşturmakta. Aynı solution içerisinde hem c# hem c/c++ uygulaması bulunur.

XNA ve XAML & XNA

Bu uygulama türü aslında WP 7.1 de kaldı. Fakat bu türde geliştirilen uygulamalar WP 8 ile de sorunsuzca kullanılabilmektedir. C/C++ bilmeden de grafik ağırlıklı uygulamalar ve oyunlar geliştirmek için kullanılmaktadır. D3D alternatifine göre kendi kütüphanesi bulunduğu için daha kısa sürede uygulama geliştirilebilir.

 

Gereksinimler

Windows Phone 8 üzerinde uygulama geliştirmek için geliştirici bilgisayarımızın hem donanımsal hem de yazılımsal olarak bazı şartları yerine getiriyor olması gerekmektedir. Uygulamalarınızı markete koyabilmeniz için bir Microsoft hesabı ve bu uygulamaları market üzerinde satmak isterseniz bir geliştirici hesabına sahip olmanız gerekmektedir. Bir oyun geliştirme niyetiniz varsa ve bu oyunun bir Xbox oyunu olmasını amaçlıyorsanız ayrıca bir Xbox geliştirici hesabına ihtiyacınız olacak.

Donanımsal Gereksinimler

Bu başlığı geliştirme ortamı ve emulasyon ortamı olarak ayırabiliriz.

Sadece Geliştirme ortamı

Yazılım gereksinimleri bölümünde belirteceğimiz Visual Studio 2012 ve Windows 8 için en düşük sistem gereksinimleri ilk adım olacak.

  • 1.6 GHz ve üzeri işlemci
  • 1 GB RAM (x86 işlemci varsa) 2 Gb Ram(x64 işlemci varsa)
  • 26 GB disk (x86 işlemci varsa) 30Gb disk (x64 işlemci varsa) (win 8 + vs2012)
  • DirectX 9 destekli 1024 x 768 ve üzerini destekleyen bir ekran kartı

Emulator ile Geliştirme Ortamı

Bir önceki gereksinimler yalnızca cihazı bilgisayara bağlayarak uygulamalarınızı test edebileceğiniz ortam içindi. Peki, uygulamaları bir Windows Phone 8 emulatorü ile denemek isterseniz? Bu durumda istekler biraz ağırlaşıyor. Hatta bir kısmı bilgisayarları tarafından desteklenmediği için ateş püskürenler var.

  • 64 bit işlemci
  • BIOS Desteği
    • Donanım Destekli Sanallaştırma.
    • Second Level Address Translation (SLAT).
    • Hardware-based Data Execution Prevention (DEP).
  • 4 GB RAM

 

İşlemci ve RAM tarafı kolayda bu diğer üç arkadaşın sistemimiz tarafından desteklenip desteklenmediğini nasıl anlayacağız?

Donanım destekli sanallaştırma (VMX) ve slat için http://technet.microsoft.com/en-us/sysinternals/cc835722 adresinde coreinfo uygulamasını yönetici olarak –v parametresi ile çalıştırdığımızda bize bu iki desteğin olup olmadığını söylecek. Intel işlemciler için SLAT, EPT adıyla geçerken AMD işlemciler için NP kısaltmalarıyla gösteriliyor.

DEP desteğinin kontrolü için bir uygulama indirmeye gerek yok komut satırını açıp wmic OS Get DataExecutionPrevention_Available komutunun çıktısını kontrol etmek yeterli. True ise sorun yok.

Yazılım Gereksinimleri

Sistemde yüklü olması gereken yazılımların listesi :

  • Windows 8 Pro x64 veya üstü
  • Windows Phone 8 SDK
  • Visual Studio 2012 veya Microsoft Visual Studio 2012 Express for Windows Phone

SDK’yı temin etmek

https://dev.windowsphone.com/en-us/downloadsdk adresinden Windows Phone 8 ile ilgili paketi seçip WPexpress_full.exe ‘yi indirip çalıştırmamız yeterli. Sistemimiz için gerekli Visual Studio Express ve Blend gibi yazılım geliştirme ürünleri yüklenecek. Eğer zaten Visual Studio 2012 yüklü ise sadece template’ler yüklenecektir. Aynı uygulamayı olası problemlerde yeniden yükleme amaçlı olarak kullanabilirsiniz.

HyperV nin Aktifleştilmesi

Emulatoru kullanabilmemiz için hyperv nin yüklenmiş olması gerekmete. Burada ufak bir hatırlatma yapayım, eğer VM Ware’in sanallaştırma uygulamalar yüklü ise hyperv aktifleştiğinde çalışmamaya başlıyorlar. Bununla ilgili bir taşıma makalesi hazırlamayı düşünüyorum.

HyperV yi aktifleştirmek için denetim masasında “Programlar ve Özellikler” bölümünden “Windows Özellikleri Aç Kapa” kısayolunu seçip HyperV kutucuğunu seçin.

Ya da alterantif olarak komut istemini yönetici olarak çalıştırıp dism.exe /online /enable-feature:Microsoft-Hyper-V komutunu çalıştırabilirsiniz.

Cihazın Geliştirici Cihazı Olarak Ayarlanması

Geliştirdiğiniz uygulamayı gerçek bir cihaz üzerinde denemek isteyeceksiniz. Fakat bu cihazın developer onlock yani geliştirici için açılmış olması gereklidir. Aksi halde şöyle bir hata alırsınız :

Error    1    Failed to connect to device as it is developer locked. For details on developer unlock, visit http://go.microsoft.com/fwlink/?LinkId=195284.

 

Bunun için sdk içerisindeki Phone Registration uygulamasını kullanmak gerekli. Bu uygulamayı başlat ekranından veya sdk dizini altında (\Tools\Phone Registration\PhoneReg.exe) bulup çalıştırın. Cihazın ekranı kilitli durumda değil ise resimdeki gibi ekranla karşılaşacaksınız.

Register düğmesine bastığınızda, sizden geliştirici hesabınızın bilgileri istenecektir. Cihazın bağlı olduğu hesap ile geliştirici hesabı aynı olması gerekmemektedir. Geliştirici hesabı bir Microsoft hesabıdır ve https://dev.windowsphone.com üzerinden kayıt olunarak alınabilir. Uygulamatın markete koyulabilmesi için dreamspark hesabınız ile ilişkilendirme yapabilirsiniz.

Giik Fm

Daron Yöndem her zaman olduğu gibi öncesinde kimseye bir kelime çıtlatmadan bir projesini daha hayata geçirdi. Geek geyikleri bulabileceğiniz bu adres ilk kayıttan geleceğinin ne kadar iyi olacağını gösteriyor. Fakat muhabbet güzel olunca 40dk ayırmak cidden zorlaşıyor. Tavsiyem, kaydı indirin ve %25~50 hızlandırarak dinlemeniz yönünde olacak.

 

Giik Fm On Air

 

Visual Studio 2012 ile 2010 renkleri

 

Bir önceki yazıda 2012′nin renklerini de pek sevmediğimi söylemiştim. Bu sıkıntımı çözmek için biraz araştırma yaptığımda Brian Chavez’in renkleri düzenlemek için yaptığı tool’a rastladım. Bu tool u buradan indirebilirsiniz.

Bu araç ile 1- 2 saat uğraşarak Visual Studio 2010′un renklerinin büyük kısmını aktarmayı başardım. Bununla ilgili yaptığım registry dosyasına http://www.cihanyakar.com/2010theme.zip    ulaşabilirsiniz.

Elde edeceğiniz sonuç :

Ek :

Bu yazının hemen ardından vs2010′da olan tema eklentisi 2012 için düzenlendi. Registry vb. uğraşmadan hazır temalardan seçim yapmak için :

http://visualstudiogallery.msdn.microsoft.com/366ad100-0003-4c9a-81a8-337d4e7ace05

adresinden eklentiyi kurabilirsiniz.

 

 

Visual Studio 2012 Menü Çubuğunu Eski Haline Getirme

Metro arayüzünü seviyorum, fakat Visual Studio 2012′yi bu konuda kendimce başarısız buluyorum. Özellikle renk ve BÜYÜK harf konusunda. Bu konulardaki araştırmalarımın sonuçlarını benim gibi kendince bu konuda rahatsız olanlar için paylaşıyorum :)

Menü çubuğunun şu görüntüsünden rahatsızsınız :

registy’yi açıyoruz ve

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\General\

alanına gelip  SuppressUppercaseConversion  adında bir DWORD değeri oluşturup değerine 1 veriyoruz.

ve ardınan istenen sonuçla karşılaşıyoruz :