garen.yöndem launching ...3 ...2 ...1

Windows Phone 8 SDK'deki Yeni Launcher ve Chooser'lara Detaylı Bakış

9. Temmuz 2013 10:00by Garen Yöndem

Launcher ve chooser yapıları Microsoft’un da kullanılmasını sık sık tavsiye ettiği, son kullanıcının işletim sisteminde alışık olduğu davranışları uygulamanıza taşıyabilmenizi sağlayan yapılardır. Dolayısıyla, uygulamanızın işletim sistemi içinde doğal gözükmesini sağlamakla kalmayıp, yazmanız gereken kod miktarını azaltmanız da mümkün. Şimdi Windows Phone 8 SDK’deki yeni launcher ve chooser’ların bir kısmını nasıl kullanabileceğimize göz atalım.

 

Save Appointment Task

Bu task’i kullanarak uygulamanızdan Windows Phone’un native takviminde buluşma kaydetme ekranına yönlendirme yapabilirsiniz. Kaydedilecek buluşmanın başlık, konum, tarihi gibi detaylarını da önceden belirleme imkanınız var. Bunu SaveAppointentTask classı’nın StartTime, Reminder gibi metodlarına değer atayarak yapabilirsiniz.

 

windows phone 8 sdk save appointment task

 

using Microsoft.Phone.Tasks;
private void save_appointment_task(object sender, RoutedEventArgs e)
{
SaveAppointmentTask save = new SaveAppointmentTask();
save.Subject = "Akşam yemeği";
save.Location = "Yan yol";
save.Details = "cüzdanını almayı unutma";
save.StartTime = new DateTime(2013, 6, 24);
save.IsAllDayEvent = true;
save.Reminder = Reminder.FifteenMinutes;
save.AppointmentStatus = Microsoft.Phone.UserData.AppointmentStatus.Busy;
save.Show();
}

 

Maps Task

Windows Phone’daki native harita uygulamasına yönlendirme yapabilir, mekana ait isim (ip ucu kelimeler, string bir değer) veya geo-coordinate değerlerini sunup haritada dilediğiniz bir noktayı kullanıcıya gösterebilirsiniz. ZoomLevel methoduyla ise haritaya olan yakınlık mesafesini ayarlayabilirsiniz.

 

using Microsoft.Phone.Tasks;
using System.Device.Location;
private void maps_task(object sender, RoutedEventArgs e)
{
MapsTask map = new MapsTask();
map.SearchTerm = "istanbul taksim";
map.ZoomLevel = 3;
map.Show();
}

 

Maps Direction Task

Native harita uygulamasıyla, belirlediğiniz A ve B noktaları arasındaki yolu gösterebilirsiniz. Bu işlem için LabeledMapLocation class’ının Label ve Location parametrelerini kullanabilirsiniz.

 

windows phone 8 sdk maps direction task

 

using Microsoft.Phone.Tasks;
private void map_direction_task(object sender, RoutedEventArgs e)
{
MapsDirectionsTask MapsDirectionsTask = new MapsDirectionsTask();
MapsDirectionsTask.Start = new LabeledMapLocation("Istanbul Mecidiyeköy", null);
MapsDirectionsTask.End = new LabeledMapLocation("Istanbul Taksim", null);
MapsDirectionsTask.Show();
} 

 

LabeledMapLocation class’ının Location parametresini null belirlediğinizde, ilk parametredeki string değer harita üzerinde konum araması yapmak için kullanılır. Birden fazla konum bulunduğunda ise kullanıcı bulunan konumların listelendiği ekrana yönlendirilir.

 

Farklı bir senaryoda A noktası telefonun mevcut konumu da olabilir. MapsDirectionTask’in Start metoduna değer vermeyerek başlangıç noktası olarak telefonun mevcut konumunu kullanabilirsiniz.

 

using Microsoft.Phone.Tasks;
using System.Device.Location;
private void map_direction_task(object sender, RoutedEventArgs e)
{
MapsDirectionsTask MapsDirectionsTask = new MapsDirectionsTask();
GeoCoordinate besiktas_koordinat = new GeoCoordinate(41.042646, 29.007299);
MapsDirectionsTask.End = new LabeledMapLocation("Istanbul Beşiktaş", besiktas_koordinat);
MapsDirectionsTask.Show();
} 

 

Map Updater ve Map Downloader Task

Şimdiye kadar göz attığımız task’leri önem sırasına koyacak olsaydım, muhtemelen listenin en alt sırasında bu iki task’e yer verirdim. Yine de kısaca bahsedecek olursak MapDownloaderTask ile telefona indirilmiş çevrimdışı haritaların görülebileceği sayfaya uygulamanızdan yönlendirme yapabilirsiniz.

 

windows phone 8 sdk maps downloader task

 

using Microsoft.Phone.Tasks;
private void map_downloader_task(object sender, RoutedEventArgs e)
{
MapDownloaderTask mapdownloader = new MapDownloaderTask();
mapdownloader.Show();
}

 

MapsUpdaterTask’le ise, çevrimdışı haritaların güncelleme kontrolünün yapıldığı sayfaya yönlendirme yapabilirsiniz.

 

windows phone 8 sdk maps updater task

 

using Microsoft.Phone.Tasks;
private void map_updater_task(object sender, RoutedEventArgs e)
{
MapUpdaterTask mapupdater = new MapUpdaterTask();
mapupdater.Show();
}

 

Kurumsal, harita uygulamaları geliştiren ekiplerin işine yarayabilir belki. Kim bilir? :)

 

Share Media Task

İlk bakışta kelime anlamıyla heyecanlandıran bu task şimdilik sadece fotoğraf paylaşımına izin veriyor. Yani kod tarafından uygulamanızdaki bir fotoğraf dosyasının veya kamerayla çekilen bir fotoğrafın, NFC, E-mail veya desteklenen diğer sosyal platformlarda (OneNote, Twitter, Whatsapp vb.) paylaşılabilmesini sağlayabilirsiniz.

 

Dolayısıyla öncelikle bir fotoğraf dosyasına ihtiyacımız var. Bunun için PhotoChooserTask’i kullanmalısınız. PhotoChooserTask’le uygulamanızdan telefondaki fotoğraf galerisine ve kameraya ulaşım sağlayabilirsiniz.

 

windows phone 8 sdk photo chooser task

using Microsoft.Phone.Tasks;
private void share_media_task(object sender, RoutedEventArgs e)
{
PhotoChooserTask choosen_photo = new PhotoChooserTask();
choosen_photo.ShowCamera = true;
var take_choosen = choosen_photo;
take_choosen.Completed += PhotoChooserTaskCompleted;
take_choosen.Show();
}

 

Fotoğraf seçildikten sonra kod tarafında ShareMediaTask’in FilePath methoduna fotoğrafın dosya adını tanımlanarak paylaşım ekranına yönlendirebilirsiniz.

 

windows phone 8 sdk share media task

 

void PhotoChooserTaskCompleted(object sender, PhotoResult e)
{
var share_media = new ShareMediaTask { FilePath = e.OriginalFileName };
share_media.Show();
}

 

Save Ringtone Task

Uzun zamandır Windows Phone’da olması istenilen zil sesi kaydetme özelliği için nihayet Windows Phone 8 SDK ile destek geldi. Ancak çok heyecanlanmayın :) henüz işletim sistemindeki fonksiyonlara farklı zil sesleri atayabilmenin imkanı yok. Yine de gelişmeler sevindirici.

 

SaveRingtoneTask’ın Source metodunu kullanarak M4R, MP3 ve WMA formatındaki 30Mb’dan küçük ses dosyalarını zil sesi olarak kaydedebilirsiniz.

 

windows phone 8 sdk save ringtone task

 

using Microsoft.Phone.Tasks;
private void save_ringtone(object sender, RoutedEventArgs e)
{
SaveRingtoneTask saveringtone = new SaveRingtoneTask();
saveringtone.Source = new Uri("appdata:/ringtone/Super_Mario_Ringtone.mp3");
saveringtone.DisplayName = "Super Mario Ringtone";
saveringtone.Show();
}

 

Örneklerin bulunduğu uygulamayı aşağıdaki linkte bulabilirsiniz. Kendinize iyi bakın, görüşmek üzere.

 

Wp8_yeni_launcher_ve_chooserlar.rar (896,53 kb)

Windows Phone 8 SDK'deki Yeni Kontroller ve Launcher, Chooser Task'leri

24. Mart 2013 19:50by Garen Yöndem

Daha önce Windows Phone 7.x SDK’deki Task’lerin bir kısmından bahsetmiştik. Bu yazıda ise Windows Phone 8 SDK ile yeni gelen / güncellenen, kontroller, chooser’lar ve launcher’lara giriş yapacağız.

 

Yeni Launcher ve Chooser Taskleri ;

SaveAppointmentTask: Takvimde yeni buluşma yaratma sayfasına yönlendirir.

MapsTask: İşletim sistemi içerisinde bulunan native harita uygulamasına yönlendirir.

MapsDirectionsTask: Native harita uygulamasını yol tarifiyle açar.

MapDownloaderTask: Native harita uygulamasında harita indirme sayfasını açar.

MapUpdaterTask: Native harita uygulamasını açar ve otomatik olarak çevrimdışı haritaların güncellemelerini kontrol eder.

ShareMediaTask: Medya dosyası paylaşma sayfasına yönlendirir.

SaveRingtoneTask: Telefona zil sesi kaydetme sayfasına yönlendirir.

 

Yeni Kontroller ;

MapsControl: Eskiden kullandığımız Bing Maps’in aksine vektör tabanlı bir harita sunuyor, dolayısıyla daha hızlı render ediliyor. Aynı zamanda aydınlık ve karanlık tema seçenekleri de mevcut.

 

Xaml dosyanızda kullanmak isterseniz ;

 

xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"

 

şeklinde dosyanıza eklemeniz gerekiyor.

 

LongListSelectorControl: Windows Phone 7.x SDK’ini kullandığımız zaman uygulamalarımıza jump-list ekleyebilmek için Windows Phone Toolkit library’sine ihtiyacımız vardı. Artık bu kontrol bize Windows Phone 8 SDK ile sunuluyor.

Bunlara ek olarak Pivot ve Panorama kontrollerinde uygulama içerisindeki performans arttırmak ve bellek kullanımını düşürmek için detaylı optimizasyon çalışmaları yapıldığı da söylentiler arasında.

 

Sıradaki yazımda burada bahsettiğimiz bazı task’lere daha detaylıca bakacağız.

Görüşmek üzere. Takipte kalın!

Office 2013'de Yazma Animasyonunu Kapatmak

23. Şubat 2013 20:00by Garen Yöndem

Microsoft'un ortamlarımızı "Modern UI" 'a dönüştürme süreci Office 2013 ile devam ediyor. Office 2013'e eklenmiş olan doğal yazı yazma animasyonu da bunun bir parçası. Bazıları için bu animasyon hoş bir görüntü oluşturuyor olsa da, esasında hızlı yazı yazanlar için bir dezavantaj oluşturuyor. Örneğin, dakikada yetmiş-seksen kelime yazabilenler için :). Hız olarak bu seviyelere ulaştığınızda animasyondan dolayı imleç'in takıldığı söyleniyor.

Ancak, bu animasyon aynı zamanda düşük konfigürasyonlu bilgisayarlarda da takılmalara sebep olabiliyor.

Yazma animasyonunu devre dışı bırakmak için Office'in Registry'lerine Graphics adında bir Key ve altına DisableAnimations adında bir DWORD value eklemeniz gerekiyor.

Registery Editor'e ulaşmak için, Run (Windows + R) penceresinden "regedit" yazıp enter'a basmalısınız.

 

Garen Yöndem - Run, Registry Editor, Regedit, Office 2013'de Yazma Animasyonunu Kapatmak

 

HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common yolunu takip ettikten sonra, Common klasörüne sağ tıklayarak "New > Key" seçerek Graphics adında bir alt klasör yaratmalı ve klasörün içerisine de "New > DWORD (32-Bit) Value" yoluyla DisableAnimations adında bir DWORD değeri eklemelisiniz.

 

Garen Yöndem - Run, Registry Editor, Regedit, Office 2013'de Yazma Animasyonunu Kapatmak

 

Sonrasında, DisableAnimastion'ınıza çift tıklayarak açacağınız pencereden hexadecimal 1 değerini verip kaydetmelisiniz.

 

Garen Yöndem - Run, Registry Editor, Regedit, Office 2013'de Yazma Animasyonunu Kapatmak

 

Böylece, bilgisayarınızı yeniden başlattığınızda Office 2013 programlarında yazma animasyonunu artık görmeyeceksiniz.

Animasyonu tekrar aktive etmek istediğinizde hexadecimal değerini 0'a çevirmeniz yeterli.

Görüşmek üzere!

Pivot ve Panorama Kontrollerinde Seçilen Item'ı Yakalamak

17. Ocak 2013 17:35by Garen Yöndem

Windows Phone uygulamalarınız için ApplicationBarlar olmazsa olmazlardan. Her sayfa için ayrı ApplicationBar özellikleri tanımlayabilirsiniz. Ancak, konu Pivot veya Panorama tasarımına sahip sayfalar olunca iş biraz değişebilir. Pivot ve Panorama tipindeki sayfalar, daha geniş kullanım alanı sundukları için çok yönlü kullanıma elverişliler. Elbette bu tip sayfalar için de tek tip ApplicationBar kullanabiliriz. Ancak bu yazıda, Pivot ve Panorama sayfalar içerisindeki Itemlar arasında kaydırma yaparken farklı ApplicationBar’ların nasıl kullanılabileceğini ele alacağız.

Pivot ve Panorama tasarımlarındaki sayfalar, az önce de bahsettiğimiz gibi bize daha geniş kullanım alanı sunuyorlar. Aslında bu alan içerisinde gerçekleşen olay, kullanıcının viewport açısını değiştirerek sayfanın devamındaki içeriği de görebilmesidir. Fakat developerlar için arka planda işler biraz farklı. Örneğin Pivot sayfalarda PivotItemlar ve Panorama tarafında da PanoramaItemlar mevcut. Pivot ve Panorama sayfalarda SelectionChanged event’ını kullanarak sayfa geçişlerini yakalayabilirsiniz.

<!--Pivot-->
<phone:Pivot SelectionChanged="My_Pivot_SelectionChanged"/>

 

<!--Panorama-->
<phone:Panorama SelectionChanged="My_Panorama_SelectionChanged"/>

Bu event’ın yardımıyla her PivotItem veya PanoramaItem için farklı ApplicationBar görüntüleyebilir veya ApplicationBar’ınızı gizleyebilirsiniz.

C# tarafında ise switch-case yöntemiyle Pivot’un SelectedIndex’ine ulaşıp, index numarasına göre farklı işlemleri tetikleyebilirsiniz.

Örnek olarak ApplicationBar’ınızı ikinci Itemda gizlemeye çalıştığınızı varsayalım.

// Pivot
private void My_Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (((Pivot)sender).SelectedIndex)
{
case 0: // index numarasına göre ilk itemı temsil eder
ApplicationBar.IsVisible = true;
break;
case 1:
ApplicationBar.IsVisible = false;
break;
}
}

 

// Panorama
private void Panorama_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (((Panorama)sender).SelectedIndex)
{
case 0: // index numarasına göre ilk itemı temsil eder
ApplicationBar.IsVisible = true;
break;
case 1:
ApplicationBar.IsVisible = false;
break;
}
}

Böylece Pivot'umuzun veya Panorama'mızın ikinci item'ında ApplicationBar'ımızı gizlemiş olduk.

PanoramaSelectionCange.rar (402,34 kb)

Oyungezer Windows Phone Uygulamasına Güncelleme

23. Aralık 2012 16:50by Garen Yöndem

Geçen ay Oyungezer uygulamamın Log dergisinde yayınlanmasını müjdelerken söz verdiğim update nihayet yayınlandı. Marketplace’ten “Uygulamanın açıklaması, iPad veya diğer mobil platformların uygulamalarının açıklamalarına benziyor” tarzında bir yorumla geri gelmesi submission sürecini yaklaşık bir hafta uzattı. Dolayısıyla update bildirimi de ancak üç gün önce cihazlara ulaşabildi.

 

Marketplace’ten bu tarzda gelen yorumlarla ilgili yazılabilecek çok şey var aslında, nedense en komik yorumlar da bana denk geliyor sanırım. Herneyse bu konudaki düşüncelerimi daha sonraki yazılarıma saklayacağım ama siz de bu şekilde bir geri bildirimle karşılaşırsanız aklınızda bulunsun. Uygulamalarınızın açıklamalarında bir şekilde “Windows Phone” markasına yer vermeye çalışın ;).

 

Örnek olarak;

 

Oyungezer Windows Phone uygulaması sayesinde oyun Dünyasına dair her şeyden haberdar olun. Oyungezer dergisi ekibinin sunduğu haberleri, twittleri, facebook güncellemelerini ve youtube videolarını Windows Phone'unuzdan takip etmenin keyfine varın. Oyungezer dergisi ekibini takip etmek hiç bu kadar kolay olmamıştı.

 

Şimdi uygulamaya yaptığım yeniliklerden bahsetmek istiyorum. Uygulamayı indirip versiyon bilgisi sayfasına bakmış olanlar zaten görmüşlerdir. En büyük yeniliklerden biri Oyungezer Facebook sayfası. Artık uygulamadan OGZ Facebook güncellemelerini de takip edebilirsiniz. Facebook sayfasının uygulamaya eklenmesini isteyenler olmuştu, onlar için iyi haber. Yorumlarıyla yaptıkları katkılardan dolayı da onlara teşekkür ediyorum. Bir diğer önemli gelişme ise, uygulamada istediğiniz her haberi Microsoft accountunuz bağlı olduğu sosyal platformlarda paylaşabiliyor olmanız. Böylece uygulama artık tek yönlü bir uygulama olmaktan çıktı :). Sizden gelecek yorumlar doğrulutsunda uygulamaya yeni güncellemeler çıkarmaya devam edeceğim. Şimdilik benden bu kadar.

 

Görüşmek üzere!