5 Temmuz 2011 Salı

Windows Phone 7 nedir? WP7'de nasıl uygulama geliştirilir?

Mobil uygulamaların şuan çok popüler olduğunu biliyorsunuz.. Ama Objective C, Java falan kasamıycam diyosunuz.. Zaten Macbook falan da almak lazım şimdi Emülatörle uğraşamam da dersiniz.. Eee Silverlight biliyorsunuz az çok! Ne duruyorsunuz mobil uygulama geliştirmek için?

Windows Phone 7.. Microsoft'un yeni nesil akıllı telefon işletim sistemi. Üzerinde uygulama geliştirmek için Silverlight bilmek yeterli! Bakalım nasıl kuruluyor:
  1. Windows Phone Developer Tools
  2. Windows Phone Developer Tools January 2011 Update
  3. Windows Phone Developer Tools Fix
Bunları indirip yükledikten sonra VS 2010'umuz açıyoruz. Ola ki bu noktada şu hatayı aldınız:

WP7 paketindeki herhangi bir yazılımın VS 2010 SP1 ile çalışmakta sorun yaşadığı anlamına geliyor. Bunu da aşmak için:

Control Panel --> Programs and Features --> Microsoft Visual Studio 2010 Service Pack 1 --> Uninstall/Change --> ReApply
MS Visual Studio 2010 SP1

yapmak yeterli. Sorunu aştıktan sonra VS 2010'umuzu açıyoruz ve Yeni Proje ekranında, sol menüde yeni bir arkadaşımız var artık: Silverlight for Windows Phone















Bu ekranda, Windows Phone Application seçerek yeni projemizi yaratıyoruz. VS 2010 geliştirme ekranı 2'ye bölünmüş olarak geliyor. Bir tarafta klasik xaml kodu, diğer tarafta xaml'de yaptığımız değişiklikleri anında görebileceğimiz WP7 ekranı.





















Hemen bir Hello World geliştiriyoruz.

Xaml:
<phone:PhoneApplicationPage
x:Class="TestWP7App.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" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">

<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="HELLO WORLD"
Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="Giriş" Margin="9,-7,0,0"
Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBox x:Name="txtName" Width="300" Height="80"></TextBox>
<Button x:Name="btnHello" Content="Selam" Width="150"
Height="80" Click="btnHello_Click"></Button>
</StackPanel>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock x:Name="txtResult" Width="300" Height="80"
TextAlignment="Center" FontSize="50"></TextBlock>
</StackPanel>
</StackPanel>
</Grid>
</Grid>
</phone:PhoneApplicationPage>
Designer Görünümü:
























Code Behind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace TestWP7App
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}

private void btnHello_Click(object sender, RoutedEventArgs e)
{
string isim = txtName.Text.Trim();
txtResult.Text = "Hello " + isim;
}
}
}

Derledikten sonra yapmamız gereken uygulamamızı test etmek. Ama henüz Türkiye'de satışa çıkmadığı için elimizde WP7 işletim sistemi içeren akıllı telefon yok :( Yılmayınız! Testimizi Developer Tools içerisinde gelen Emülatör üzerinde yaparız, müsterih olun.. Bunun için Standart Bar'dan Windows Phone 7 Emulator seçimini yaptıktan sonra Proje --> Deploy yapmanız yeterli.




Deploy işlemini yaptıktan sonra emülatör otomatik olarak açılacak ve sırayla aşağıdaki ekranlar gelecek:




















Bu ekranda uygulamamızı seçtiğimizde de geliştirdiğimiz uygulamamız açılacak. Testimizi artık gerçekleştirebiliriz:

Emülatör testi sırasında karakter girişi yapılacak textbox gibi alanlara tıklandığında otomatik olarak sanal klavye çıkıyor örnekte de görüldüğü üzere. Karakter seçimi de bu sanal klavye üzerinden fare kullanarak yapılıyor. Sanal klavye çok tatlı görünse de sık yapılan testlerde bir noktadan sonra tek tek karakter seçmek insanı bayıyor. Bunun için de Page Up/ Page Down tuşları ile sanal klavye / normal klavye geçişini sağlayabilirsiniz ;)

Gördüğünüz gibi çok basit bir şekilde ilk Mobil uygulamanızı geliştirdiniz. Tebrikler!

Ben Microsoft'un verdiği kontrollerle yetinemem, daha fazla isterim diyenler için de insanlar boş durmamış:
  1. Silverlight For Windows Phone Toolkit (Ücretsiz, codeplex'te)
  2. Telerik RadControls for Windows Phone 7 (Ücrete tabii)

Olur da bir şekilde WP7 içeren akıllı telefon edinirseniz, telefon üzerinde uygulamanızı çalıştırmak için development makinenize Zune Software yüklemeniz yeterli. Telefonunuz data kablosuyla development makinenize bağladıktan sonra, VS 2010'dan deploy ederken Standart Bar'dan bu sefer Windows Phone 7 Emulator yerine Windows Phone 7 Device seçerek deployment yapacaksınız. Zune Software arka planda çalışarak sizin için gerekli deployment işlemini gerçekleştirecek. Yalnız bu şekilde uygulama atmanın problemi, bir süre sonra uygulamanın telefondan silinmesi (sanırım demo gibi bir kapsamda sayılıyor). Genel bir dağıtım için de WP7'de henüz bir güzelliği yok Microsoft'un. Bunun için Ekim ortasında release olacak olan bir sonraki sürüm 7.1 yani Mango'yu beklemek gerekecekmiş (Daron Yöndem öyle söyledi).

WP7 girişi için şimdilik söyleyeceklerim bu kadar, umarım süper uygulamalar geliştirmenizde bir katkım olmuştur ;)

Hiç yorum yok: