iOS ve Android’e gerçek bir rakip: Windows Phone 8.1


Windows Phone 8.1 ile birlikte Windows Phone, ben de buradayım dedi adeta! Windows Phone ‘nun en büyük eksikliklerinden biri arka plan resmi seçeneğinin olmamasıydı. Bu da telefonun görünümünün sıradanlaşmasına sebep oluyordu. 8.1 ile Microsoft, tasarıma daha çok önem vermiş gibi gözüküyor. Öyle de olması lazımdı, çünkü günümüzde görsellik birçok şeyden önce gelmekte. 8.1 ile gelen harika birçok özellik var fakat ben bu yazımda görsellik üzerinde durmak istiyorum.

Arka plan resmini değiştirebildiğimiz gibi daha fazla kutucukta gösterebiliyoruz yeni Windows Phone 8.1 ile birlikte. Transparency Tiles ile uygulamaların kutucuklarını transparan yapıp istediğimiz şekilde arka planımızı şekillendirebiliyoruz.

Transparency Tiles indirmek için;

http://www.windowsphone.com/en-us/store/app/transparency-tiles/f4125e62-a88b-4f7d-b8f6-3cd60069f105

Untitled-1

Telefon değil siz kendinize göre görünümü ayarlıyorsunuz, diğer işletim sistemlerinden farkı da burda göze çarpıyor Windows Phone 8.1’in.

Birkaç örnek vermek gerekirse;

TileArtTips

TileArtGuyTips8

 

Bunların yanında geçen haftalarda Live Lock Screen uygulamasının betası çıktı, bu uygulama ile dinamik ekran kilidi oluşturabiliyoruz. Henüz beta olsa bile bence çok başarılı. Gerçekten hoş bir görünüm kazandırıyor telefona.

Live Lock Screen BETA indirmek için;

http://www.windowsphone.com/en-us/store/app/live-lock-screen-beta/f5685f66-5e43-46f9-b95e-bfc2a4a15de3

12

Ve benim telefonumdan bir görüntü;

Untitled-2

MVVM nedir?

Merhabalar, bu yazımda MVVM design pattern’i açık bir şekilde anlatmaya çalışacağım. Genelde bir uygulamayı yazarken geleceğini düşünmeden yazarız, buna bir çeşit alışkanlık diyebiliriz. Eğer ilk kez bir design pattern ile uğraşacaksanız ilk tepkiniz: “ne gerek var buna ya ben zaten aynısını daha kısa sürede bildiğim yöntemle yapıyorum” olacak, benim de olmuştu 🙂 Ama yazacağınız uygulama büyük ve geliştirilebilir bir uygulama olacaksa bu klasik yöntemden vazgeçmeniz gerekecek. Neden mi?

Çünkü;

  • Tüm uygulama mantıklarını sayfanın .cs uzantılı dosyasına yazacağınız için ileride geliştirme aşamasında kodlar içinde kaybolacaksınız.
  • XAML’i modifiye etmek veya değiştirmek için ekstra çaba sarfedeceksiniz.
  • Arkada çok fazla kod olacağı için , en ufak bir arayüz değişikliğinde gereksiz zaman kaybeceksiniz.
  • Sayfada gösterilecek bilgiler bir data servisten geliyorsa, bunun tasarım sırasında görünümünü göremeyeceksiniz, doğal olarak tasarımınızı çok fazla geliştiremeyeceksiniz.

 Peki nedir bu MVVM?

MVVM,  MVC’nin bir çeşit XAML’a uyarlanmış hali diyebiliriz. Bu yüzden MVC ile benzer yanları çoktur, eğer MVC ile uğraşanlarınız varsa MVVM’e adapte olmak o kadar da zor olmayacak. MVVM ‘i farklı kılan nokta ise, data binding, ViewModel ve View ile arasında olan çift taraflı iletişim. MVVM’i XAML ve .NET kullanılan her uygulamada kullanmak mümkün.( Windows Phone, Windows Store)

MVVM 3 yapıdan oluşmakta;

Model, business logic dediğimiz uygulamanın mantığını ve gerekli tüm servisleri kapsar.

View, arayüzdür, yani son kullanıcının gördüğü kısımdır.

ViewModel, bu iki yapı arasındaki iletişimi sağlar, ViewModel için en güzel yakıştırma orkestra şefi olabilir, uygulamayı koordine eden en önemli yapı dersek yanlış olmaz sanırım.

viewmodel

Genelde her bir View, bir ViewModel’a sahiptir. Böylece bağımlılık minimuma yaklaşmış olur. View-ViewModel arasında çift yönlü iletişim: Data Binding vardır, ViewModel-Model arasında ise klasik metot çağırmalar mevcuttur.

Bu 3 yapı sayesinde MVVM, business logic ile arayüzü birbirinden ayırır, bu sayede tasarımcı bir yandan tasarımını yaparken, developerda arkadaki işlemleri yapar. Bu aynı zamanda MVVM’in kullanım amacıdır. Böylece uygulamanın geliştirilmesi ve  test edilmesi kolaylaşır.

Bir sonraki yazımda, Windows Phone 8’de MVVM design pattern’in kullanılırlığını gösteren örnek bir uygulama üzerinden anlatıma devam edeceğim.

 

Microsoft Türkiye Yaz Okulu 2014 ‘e Geri Sayım Başladı!

Microsoft Yaz Okulu

4 Ağustos’ta seçilerek gelmiş yaklaşık 100 öğrenci ile Microsoft yaz okuluna başlayacak olmanın heyecanı gün geçtikçe artıyor. 1 ay sürecek olan yaz okulu sonrası, yaz okuluna katılmaya hak kazanan “şanslı kişiler” bilgi seviyelerini arttırma fırsatı ve güzel bir network oluşturma şansı yakalayacaklar. Hem çok eğleneceğiz, hem çok şey öğreneceğiz ! Yaz okulu sonrasında ise yaptığımız projelerimizi Türkiye’nin önde gelen CEO’larına tanıtma imkanımız olacak. Yani kısacası; ” Something cool is coming 😛 ”

Yaz okulu boyunca hergün azure bloğumdan günün değerlendirmesini yapacağım, takip etmek isteyenler için;

http://tanerutku.azurewebsites.net/

Windows Phone Haritada Konum Gösterme

Konum tabanlı uygulamalar çok yaygın olarak kullanılıyor ve çok yaratıcı fikirler çıkabiliyor. Bu yüzden bu yazımda Windows Phone Map kontolünü kullanarak, konumumuzu harita üzerinde gösteren basit bir uygulamayı adım adım nasıl yaparız anlatmaya çalışacağım. Bu yazımın sonunda Map kontrolü ve Windows Phone API içinde bulunan Geolocator sınıfı hakkında bilgiler edineceksiniz.

Yeni bir Windows Phone projesi açarak başlayalım, açtığımız projeye bir adet map kontrolü ekleyip tüm ekrana yayılacak şekilde Design kısmından ayarlayalım.

1

C# kodumuzda kullanacağımız için, XAML kısmında eklediğimiz map kontrolünün Name attribute’ne  isim vermeliyiz.

2MainPage’in Loaded event’ı ile ilgileneceğiz. InitializeComponent(); altına Loaded += yazdıktan sonra bir kere TAB’a bastığınızda MainPage_Loaded eklenecek, bir kere daha TAB’a bastığınızda handler otomatik olarak oluşacak ve kodlarımızı yazmaya başlayacağız.

3

4

Haritayı güncellemeyi ayrı bir metot  üzerinden yapacağım için bir metot oluşturdum, Haritada konum göstereceğimiz için cihazın GPS sistemini kullanan Geolocator sınıfına ihtiyacımız var. Geolocator sınıfını kullanmamız için Windows.Devices.Geolocation namespace’ini eklememiz gerekiyor. Üstüne geldiğinizde tek tıklamayla namespace’i ekleyebilirsiniz.

5

Geoposition sınıfını kullanarakta, geolocator’dan gelecek koordinatları alacağız. En sonunda Map’imizin SetView’ini de latitute, longtitude ve yakınlaştırma derecesini vererek konumumuzu haritada göstermeye hazır hale getireceğiz. Unutmamız gereken şey, konumu alırken await kullandığımız için metotu async yapmalıyız.

6

Ve MainPage_Loaded handler’ın içinde yazdığımız  HaritayiGuncelle(); metotunu çağırmalıyız.

7

Başka bir değişiklik yapmadan projeyi çalıştırdığımızda hata verecek çünkü Map kontrolü Mapping ve Location Capability’lere gereksinim duyar. Bunları açmak için;

Prefences – WMAppManifest.xml – Capabilities konumunu izleyip ID_CAP_LOCATION ve ID_CAP_MAP seçili hale geldiğinden emin olun.

8

Emülatorde çalıştırdığınızda sürekli aynı yer gelecek karşınıza, endişelenmeyin kodunuz sorunsuz çalışıyor demektir eğer Redmond ise emülatorde gözüken konum. Emülator bir sanal makina olduğu için konum servisini kullandığımızda Windows Phone emülator bize Microsoft HQ konumunu gösteriyor. Eğer fiziksel bir cihazda uygulamayı çalıştırırsanız sorunsuz çalıştığını göreceksiniz.

9

Herşey güzel fakat herhangi bir yer gösterici yok. Bunun için birkaç satır kod yazmamız gerekiyor.

 


            var overlay = new MapOverlay { GeoCoordinate = new GeoCoordinate(position.Coordinate.Latitude, 
                          position.Coordinate.Longitude)  };

            var img = new Image { Width = 56, Height = 56 };
            img.Source = new BitmapImage { UriSource = new Uri("/Assets/mapmarker.png", UriKind.Relative) };

            overlay.Content = img;

            var mapLayer = new MapLayer { overlay };
            MapKontrol.Layers.Add(mapLayer);

10

Şimdi daha güzel oldu fakat alttaki warning’ten kurtulmamız gerek. Bunun için devcenter’dan uygulamanız için authentication ID ve token almanız gerekiyor. Submit App’e girdiğinizde Map services kısmından gerekli id ve token’ı alabilirsiniz.

11

Kullanımı ise şu şekilde;

12Şimdi uygulamamı çalıştırdığımda herşey sorunsuz gözüküyor:

13

How To Use Microsoft Remote Desktop App on Windows Phone 8.1

Last week, Microsoft announced the preview of the Remote Desktop app for Windows Phone 8.1. But there are some questions; How to add and access a new desktop? If you wonder it, keep going to read !

1-) Download the app from the Windows Phone Store.

2-)  You have to allow remote connections on your computer. To allow; search “remote” and then select “Allow remote access to your computer”

1

2

3-) Now, open your app, click add bar, then there is a textbox for your PC’s IP address.

3

4

4-) Use Command Prompt(CMD) to learn your IP address. (ipconfig)

5

6

5-) Enter your ip address to textbox and save it.

7

6-) Tap image and enter your credential which is your mail address and password to login your PC.

8

9

7-) That’s it ! Now, you can connect your PC from your Windows Phone device.

Here are my screenshots from my phone:

 

10

11

Windows Phone 2. Sayfaya Parametre Geçirme

Merhabalar, bu yazımda key-value kullanarak 2. sayfaya parametre geçirmeyi anlatacağım. Parametrelerin geçtiğini görmek için boş bir Windows Phone 8 projesinin içine 3 adet textblock, 3 adet textbox ve 1 adet buton ekleyim. Butona tıklayınca 2. sayfaya ad-soyad, mail ve doğum tarihi değişkenlerini göndermek istiyorum. MainPage’im bu senaryoda aşağıdaki gibi;

1

2

Şimdi de 2. sayfamızı ekleyelim;

3

4

2. sayfada bir textblockta değişkenlerimi yazdıracağım, parametrelerin geçip geçmediğini böylece gözle görebiliriz. Debugging yaparakta değerlerin geçip geçmediğini görebilirsiniz fakat ben textblock kullandım. 2. safyamın xaml ‘i aşağıdaki gibi;

6

Şimdi MainPage.xaml.cs içine gidip Buton Click eventimizi kodlamamız gerekiyor.

5key-value ilişkisini kullanarak parametre geçiriyorum. Gördüğünüz gibi IkinciSayfa.xaml ‘den sonra ? var ve  sonrasında aralarında & olmak şartıyla value ve keylerim bulunmakta. Bunları belirledikten sonra yapmanız gereken bu url’i Navigate’e vermek. Yapmamız gerekenler 1. sayfamızda bu kadar. 2. sayfada OnNavigatedTo ‘yu override etmemiz gerekiyor. Kodlamasına geçecek olursak, 3 tane parametre yolladığım için 3 değişken tanımladım. Daha sonra, gönderdiğim key’de value varsa o value ‘leri tek tek tanımladığım değişkenlere atadım. Yani örneğin “adsoyad” olarak ilk sayfadan gönderdiğim key’i görüyorsa, o key’de bulunan değeri _adSoyad değişkenime QueryString kullanarak atadım.

8

Projeyi çalıştırdığımızda aşağıda gördüğünüz gibi ilk sayfada verdiğim değerler ikinci sayfaya başarıyla geçiyor.

ss1

ss2