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

Back Butonunu Devre Dışı Bırakmak

3. Eylül 2012 18:50by Garen Yöndem

Uygulamanızda kullanıcının geri gitmesini istemediğiniz sayfalar olabilir. Böyle bir durumda, Windows Phone cihazlarda fiziksel olarak bulunan back butonunu devre dışı bırakmak için OnBackKeyPress methodunu override etmeniz gerekiyor. Sonrasında CancelEventArgs’e cancel değerini verip, true olarak set etmelisiniz.

 

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
}

 

Böylece kullanıcı fiziksel back butonunu kullanarak, bulunduğu sayfadan bir önceki sayfaya dönemeyecek.

Sandisk Sansa Clip Zip ve RockBox Incelemesi

27. Ağustos 2012 12:00by Garen Yöndem

Müzik ve radyo dinlemekten pili akşama kadar dayanamayan HTC Trophy’ime uzun süredir bu zorlu görevi devredebileceği bir arkadaş arıyordum. Zorlu geçen araştırmalarımın neticesinde piyasadaki milyon tane mp3 oynatıcısı arasından aklımda iki isim kaldı. Ipod Nano 6th gen. ve Sandisk Sansa Clip Zip.

 

Sandisk Sansa Clip Zip ve RockBox Incelemesi, garen.yondem.com, Garen Yöndem

 

6’ıncı nesilde Apple nihayet Ipod serisine FM alıcı eklemeyi akıl etmiş ve alışılmışın dışında kol saati olarak kullanma imkanı da vardı. Sandisk ise Sansa Clip serisine daha büyük ve renkli bir ekran eklemişti.

 

Uzun uzun düşündükten sonra, sizin de tahmin edebileceğiniz gibi “geek” olan kazandı (neden geek dediğimi, yazımın devamında anlayacaksınız) ve geçen hafta Amazon'dan Sandisk Clip Zip siparişi verdim. İlk bakışta 32Gb micro sd kart ve RockBox desteği başımı döndürmeye yetti. Bu yüzden hızlıca bir de 32Gb micro sd kart siparişi verdim. Bu süreçte Amerika seyahatinde olduğum için 3 gün sonra paketler bana ulaştı. Paket ile olan zorlu mücadelemden sonra (bir an sanki hiç açılmayacak gibi hissettim) Clip Zip'i ilk elime aldığımda tepkim “cihaz gerçekten çok hafif !” oldu. Clip Zip Apple’ın Nano'su kadar ince ve küçük boyutlarda olmasa da, piyasadaki ikinci en küçük mp3 oynatıcı olmaya aday. Teknik özellikler açısından ise Clip Zip’in FLAC dahil pek çok codec formatını desteklemesi gibi artıları onu Ipod Nano 6th gen. ile kıyaslama yapılamayacak kadar üstün kılıyor.

 

Sandisk Sansa Clip Zip ve RockBox Incelemesi, garen.yondem.com, Garen Yöndem

 

Firmware Hakkında

Orijinal firmware'in en büyük sıkıntılarından biri, büyük boyutlardaki müzik arşivinizi tek seferde cihaza yüklediğinizde firmware'in müzik parçalarını tarayıp tür, yıl, albüm, sanatçı olarak klasörlemesinin çok uzun sürüyor olması (ben 30Gb data için 25dk bekledim). Parçalarınızın bu şekilde klasörlenmesini istiyorsanız, bu ızdıraba dayanmanız gerekiyor. Şayet, 4000 adet parçanın bulunduğu arşivinize bir parça ekleyip sayıyı 4001’e çıkardığınızda dahi orijinal firmware hepsini baştan tariyor. Tarama sürecini kısaltmak için firmware'in sizin için dosyaladığı klasörleri kullanmaktan vazgeçmeniz gerek. Sonraki aşamada, Mp3tag programını bilgisayarınıza yükleyerek arşivinizdeki parçaların comment, year, track ve diğer tag'lerini silerek tarama sürecini %60 civarında kısaltmak mümkün.

 

RockBox

Genel olarak RockBox’ın ne olduğundan bahsetmem gerekirse; RockBox çeşitli mp3 oynatıcılar için open source (açık kaynak) olarak geliştirilen, original firmware’e ek yüklenebilen, orijinal firmware'in hiçbir kısmını kullanmadan bütün donanımı yönetebilen alternatif bir firmware. Desteklenen mp3 oynatıcıların stabil veya stabil olmayan (unstable) RockBox sürümlerine hatta kaynak kodlarına www.rockbox.org’dan ulaşabilirsiniz.

 

Orijinal firmware’e kıyasla RockBox'ın başlıca avantajlarını sıralayacak olursam;

 

  • Aralıksız playback
  • Parçaların lokal veya harici hafızada bulunmasını dikkate almadan cihaz üzerinde playlist oluşturabilmek veya şekillendirebilmek
  • %5 ile %10 arasında daha uzun pil ömrü
  • Gelişmiş equalizer ayarları
  • Crossfade ve Crossfeed ayarlama özelliği
  • Daha fazla codec desteği
  • Çeşitli oyunlar ve uygulamalar (blackjack, doom, jewels, snake, sudoku, solitaire, takvim, metronome, kronometre, çalar saat, hesap makinesi ve dahası)
  • Özelleştirilebilir arayüz (tema, font)
  • Daha fazla sayıda dil desteği
  • Cihaza bakmanıza gerek kalmadan menülerin size sesli olarak okunabilme özelliği (voice menu)

 

Her ne kadar şu anda (bu post'un yayın tarihinde) Clip Zip sürümü unstable olsa da RockBox 3.13 sürümü ile artık Clip Zip'lerde stabil, aşağıdaki linkler güncellendi), ben bir haftalık kullanım sürecimde hiç bir problem ile karşılaşmadım.

 

RockBox’ı mp3 oynatıcıya yükleyebilmek için dört elemana ihtiyacımız var. Mkamsboot, Orijinal firmware, Bootloader ve RockBox Build. Başlamadan önce mp3 oynatıcı’nın usb ayarını ‘settings��� ekranından MSC moduna alıp RockBox Buildi mp3 oynatıcı’nın root klasörüne extract etmek gerekiyor. Sonra masaüstünde bir klasör yaratıp indirmiş olduğumuz bütün dosyaları (ziplenmiş olanları extract ederek) o klasöre atıyoruz ve command promptu açıyoruz. Oluşturduğumuz klasörün adının “rbinstall” olduğunu varsayarsak, komut penceresinden “cd Desktop\rbinstall” komutunu çalıştırarak klasörümüze ulaşıyoruz. Bu aşamadan sonra yapmamız gereken Mkamsboot.exe’yi çalıştırıp kendimize yamalanmış “.bin” dosyamızı oluşturmak. Bu işlemi gerçekleştirebilmek için komut satırına “mkamsboot.exe clpza.bin bootloader-clipzip.sansa patched.bin” yazıp komutu çalıştırmamız gerekiyor.

 

Sandisk Sansa Clip Zip ve RockBox Incelemesi, garen.yondem.com, Garen Yöndem

 

İlk denemenizde başarılı sonuç almazsanız işlemi tekrarlayın.

 

Son olarak yapmamız gereken, yarattığımız patched.bin dosyasının adını original firmware’in adı ile değiştirip (clpza.bin) mp3 oynatıcımızın root klasörüne kopyalamak ve cihazı usbden çıkarmak. Kısa sürecek olan firmware update ekranından sonra mp3 oynatıcı RockBox kurulmuş biçimde kullanıma hazır olacak. Cihazınızı orijinal firmware ile boot etmek isterseniz cihazı açarken sol yön tuşu olan |<< ’a basılı tutuyor olmanız yeterli. Ancak varsayılan (default) olarak her açılışda RockBox boot edilecek.

 

Sandisk Sansa Clip Zip ve RockBox Incelemesi, garen.yondem.com, Garen Yöndem

 

Yüklemeyi tamamladıktan sonra RockBox’ı kendinize özelleştirmek isterseniz RockBoxUtility.exe’yi indirerek mp3 oynatıcıya çeşitli temalar, fontlar ve Doom oyununu kurabilirsiniz (1.1” lik ekranda doom oynamanın zevkine paha biçilemez :) ).

Windows Phone Sayfa Geçiş Efektleri

17. Ağustos 2012 17:15by Garen Yöndem

Windows Phone ve yeni nesil Windows uygulamalarınıza sayfa geçiş animasyonları eklediğiniz takdirde kullanıcı deneyimi (UX) açısından kullanıcılarınıza daha tatmin edici bir deneyim yaşatmış olacaksınız. Bir başka değişle, işletim sistemindeki kullanıcı deneyimini uygulamanızda da devam ettiriyor olacaksınız. Bu da Microsoft :) ve ben dahil, tanıdığım diğer Windows Phone kullanıcıları çevrelerinde de sempati ile karşılanmakta.

Öncelikli olarak Silverlight for Windows Phone Toolkit’i Windows Phone Toolkit'i bilgisayarınıza kurmanız gerekiyor. Ardından Microsoft.Phone.Controls.Toolkit library’sini uygulamanıza referans olarak ekledikten sonra App.xaml.cs sayfasında

//RootFrame = new PhoneApplicationFrame();  ...yerine
RootFrame = new TransitionFrame();

rootframe değişikliğini yapıp, animasyon eklemek istediğiniz sayfa’nın phone:PhoneApplicationPage tag’inin içerisine Microsoft.Phone.Controls.Toolkit librarysine xmlns eklemeniz gerekiyor.

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

Sonrasında sayfanıza kayma efekti eklemek için, aşağıdaki kodu kullanabilirsiniz.

Işletim sistemi içerisinde de çok yaygın olarak kullanılan sayfa çevirme efektini eklemek isterseniz, kodunuzun aşağıdaki gibi olması gerekiyor.

Kod üzerinde birkaç değişiklik yaparak farklı geçiş efektleri elde etmeniz mümkün.

Tekrar görüşmek üzere, kolay gelsin.

Windows Phone Device Status Bilgilerini Almak [Update]

7. Ağustos 2012 17:00by Garen Yöndem

 [Orijinal Post : 19/07/2012 14:30] 

Windows Phone uygulamalarında versiyon bilgisinin nasıl alınabileceğini görmüştük. Şimdi ise cihaz bilgilerine nasıl ulaşabileceğimize değinmek istiyorum. Windows Phone cihazların donanım bilgilerine ulaşabilmek için uygulamanıza öncelikle Microsoft.Phone.Info namespaceini eklemeniz gerekiyor. Böylece DeviceStatus classı'nın propertylerine ulaşabilirsiniz.

Bu propertyler cihazın Settings>about sayfasındaki 'phone info' bilgilerini temsil ediyor.

using Microsoft.Phone.Info;
brand.Text = DeviceStatus.DeviceManufacturer;
model.Text = DeviceStatus.DeviceName;
hardwareversion.Text = DeviceStatus.DeviceHardwareVersion;
devicetotalmemory.Text = DeviceStatus.DeviceTotalMemory.ToString();
currentmemory.Text = DeviceStatus.ApplicationCurrentMemoryUsage.ToString();
peakmemoryusage.Text = DeviceStatus.ApplicationPeakMemoryUsage.ToString();
firmware.Text = DeviceStatus.DeviceFirmwareVersion;
power.Text = DeviceStatus.PowerSource.ToString();
//DeviceStatus.IsKeyboardDeployed.ToString();
//DeviceStatus.IsKeyboardPresent.ToString();

Tüm propertyler arasında belki de en az kullanılmaya değer propertyler olduklarını düşündüğüm için son iki satırı comment ettim. IsKeyboardDeployed propertysi cihazınıza bluetooth veya dock aracılığıyla bir klavyenin bağlı olup olmadığının verisini sunar. IsKeyboardPresent propertysi ise cihazınızda HTC 7 Pro veya LG Quantum modellerinde de olduğu gibi dahili bir klavye olup olmadığının verisini sunuyor.

 

garen.yondem.com windows phone device status

 

Son olarak aklınızda bulunsun, yukarıdaki kodu uygulamanıza ekleyip emülatörünüzde çalıştırdığınızda anlamlı veriler elde etmeniz mümkün olmayacak çünkü emülatörünüz PCnizin donanımını kullanıyor. Emülatör yerine bir Windows Phone cihazı bağlayarak uygulamanızı cihazda debug etmelisiniz.

Örnek uygulamayı aşağıdaki linkde bulabilirsiniz. Hayırlı Ramazanlar diliyorum.

ExampleDeviceStatus.rar (65,98 kb)

 [Update : 22/07/2012] 

Yukarıda bahsettiğim DeviceStatus classı ve cihaz bilgilerine ek olarak, cihazın mevcut mobil operatörünün bilgisine de ulaşmak mümkün. Bu işlem için Microsoft.Phone.Net.NetworkInformation namespace'ini kullanmanız gerekiyor. Böylece DeviceNetworkInformation classının altında yer alan CellularMobileOperator string değerine ulaşabilirsiniz.

using Microsoft.Phone.Net.NetworkInformation;
string mobile_carrier = DeviceNetworkInformation.CellularMobileOperator;
something.Text = mobile_carrier;

Tabi bu datayı nasıl değerlendirebilirsiniz bilmiyorum :). Projenize göre kendinize bir kullanım alanı bulabilirsiniz. Bu datayı kullanabileceğiniz uygulama fikirlerinizi benimle de aşağıda paylaşırsanız sevinirim.

Tekrar görüşmek üzere kendinize iyi bakın ;)

Windows Phone Link ve Status Paylaşım Taskleri

7. Temmuz 2012 15:00by Garen Yöndem

Microsoft’un yürütüğü Smoked/Dared by Windows Phone kampanyalarında Windows Phone’un rakiplerine karşı hiç malup olmadığı özelliklerden biri sosyal medyada hızlı paylaşım yapabilmek. Sadece işletim sistemi içerisinde değil uygulamalar içerisinde de Windows Phone’un bu nimetlerinden faydalanmak hem çok kolay hem de kullanıcı deneyimi (UX) açısından çok önemli. Hali hazırda Facebook, Twitter, Linkedin gibi sosyal ağları Live accountunuza bağladığınız takdirde Windows Phoneunuzda bulunan içerikleri bu ağlarda paylaşabiliyorsunuz. Gelecek Windows Phone 8 diğer adı ile Apollo güncellemesi ile birlikte bu entegre ağlara Foursquare, Google+ ve MySpace’in de ekleneceği dedikodular arasında.

Windows Phone uygulamalarınızda sosyal medyada içerik paylaşmak için bu ağlar ile tek tek entegrasyon yapmanıza gerek yok. Bağlı olunan mevcut Live account’un tüm üçüncü parti entegrasyon noktalarını aracısız olarak kullanabilirsiniz. Bu işlem için Windows Phone’da çok sık kullandığımız Phone Tasksden faydalanabiliriz. Phone Tasks namespaceinin altında iki farklı paylaşım taski bulunuyor. Bunlar; share link task ve share status task. Adlarından da anlayabileceğiniz gibi biri link paylaşımı için diğeri ise anlık durum paylaşımı için kullanılıyor.

using Microsoft.Phone.Tasks;

Link paylaşımı için olan ShareLinkTask’in message propertysi hariç title ve linkuri propertyleri size ait, bu bölümleri kullanıcı değiştiremiyor.

ShareLinkTask sharelink = new ShareLinkTask();
sharelink.Title = "Başlık";
sharelink.LinkUri = new Uri("http://garen.yondem.com", UriKind.Absolute);
sharelink.Message = "Metin";
sharelink.Show();

ShareStatusTask’e ise ShareLinkTask’in titlesız ve linksiz haline benzetebiliriz. Sadece metin paylaşmak için kullanılabilir.

ShareStatusTask sharestatus = new ShareStatusTask();
sharestatus.Status = "Bugün hava çok sıcak";
sharestatus.Show();

Böylece otomatik olarak kullanıcıya telefonunun (Live ID’nin) bağlı olduğu ağlardan oluşan bir liste sunulacak ve kullanıcı paylaşmak istediği ağları seçerek sizin hazırladığınız datayı o ağlarda paylaşabilecek.

Görüşmek üzere, iyi haftasonları :)