21 Mart 2013 Perşembe

LifeLoggingCCPhone - A Windows Phone 8 Based LifeLogging Application

LifeLoggingCCPhone - Windows 8 Tabanlı Bir Yaşamgünlüğü Uygulaması

"Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" isimli projede Windows Phone 8 ortamında çalışan bir yaşamgünlüğü uygulaması tasarlamaya başlamıştım. Sözkonusu uygulama çalıştırıldığında telefonun arka kamerasından 30 saniyede bir görüntü almakta ve bu görüntüleri telefonun yerel Resim Rulosu klasörüne kaydetmekteydi. Elimde bir Windows Phone 8 telefon olmadığından dolayı uygulamayı sadece Emülatör üzerinde test edebiliyordum. 12 Mart 2013 tarihinde proje kapsamında istenen Nokia Lumia 920 cep bilgisayarları geldi. Böylece LifeLoggingCCPhone yazılımını gerçek telefon üzerinde deneyerek geliştirmeye başladım.


Uygulamayı gerçek telefon üzerinde çalıştırabilmem için önce kendime bir Windows Phone Developer Account oluşturdum. Bu amaçla Microsoft’a kredi kartı ile bir yıllık hesap ücreti olarak 180 TL ödeme yaptım. Windows Phone uygulamalarımı aynı anda 3 telefona yükleyebilirim. Kendi telefonumu “Mehmet Emin Mutlu Windows Phone” olarak tanımladım. Daha sonra kendi telefonumu "https://dev.windowsphone.com/en-us/dashboard" sitesinde "remove" yaparak projedeki uygulayıcılara ait olan "Ayşe Peri Mutlu Windows Phone", "Ilker Kayabas Windows Phone" ile "Buket Kip Kayabas Windows Phone" oluşturacağım. Bu amaçla Windows Phone SDK 8.0 altındaki Developer Phone Registration uygulaması kullanıldı.

LifeLoggingCCPhone uygulamasını “Mehmet Emin Mutlu Windows Phone”’a yüklemek için Windows Phone SDK 8.0 altındaki  Windows Phone Application Deployment uygulamasını kullandım. Bu amaçla önce uygulamayı Release klasörüne Build yaptım. Daha sonra Device seçeneği ile Release klasöründeki XAP dosyasını tanıtarak telefona deployment işlemini gerçekleştirdim.

Geliştirme ortamında esneklik sağlandığından dolayı uygulamayı daha fazla geliştirmeye karar verdim. Öncelikle sadece bir sayfadan oluşan uygulama yapısını terkederek Panorama yardımıyla üç sayfalık bir yapıya geçtim. Birinci sayfada resim kaydetme işlemi gerçekleştirilecek, ikinci sayfada kaydedilen görüntüler listelenebilecek, üçüncü sayfada ise kayıtlı resimler kullanıcının SkyDrive sitesine gönderilebilecek.

SkyDrive'a gönderme yapabilmek için Microsoft Live SDK 5.3'ü yükledim. Geliştirilen telefon uygulamalarının SkyDrive'a erişebilmesi için uygulamanın Live Connect Developer Center sitesinde Windows Live ile ilişkilendirilmesi gerekmekte. Windows Phone uygulamaları için http://manage.dev.live.com/ sitesinde bu işlem yapılabilmekte. Windows Store uygulamaları ise önce Windows Store Dev Center Dashboard (https://appdev.microsoft.com/StorePortals/en-us) sitesinde tanıtılmalı, sonra Windows Live ile ilişkilendirilmelidir.

Live SDK 5.3 Windows Phone 8'i desteklemesine rağmen Phone 7.1 için çalışan pek çok API Phone 8'de çalışmamakta. LiveConnectClient'a ait UploadCompleted, GetCompleted gibi "event"'lar kaldırılmış durumda. Bu durumdan dolayı dosyaların SkyDrive'a yükleme işleminin sona ermesini kontrol edemiyorum. Bu sorun gönderilen dosyaları gönderim tamamlandıktan sonra silmemi engelliyor. Gönderilen dosyaların silinmesi işlemi gönderme tamamlandıktan sonra uygulamadan çıkıp tekrar girerek gerçekleştirebiliyorum. Bu sorunu çözmek için uygun örneklerin yayınlanmasını bekleyeceğim.

Bir başka sorun ise SkyDrive'da klasör açabiliyor olmama rağmen, resimleri bu yeni klasör yüklemeyi sağlayamamış olmam. Örneklerin çoğu REST yapısındaki örnekler. "me/skydrive" üzerinde açılmış bir klasöre dosya yüklemeyle ilgili C# ya da VB.Net ile yazılmış bir örneğe rastlamadım. Bu nedenle şu aşamada görüntüleri SkyDrive klasörünün köküne yüklüyorum. İlgili örneklere rastladığımda alt klasöre yükleme özelliğini ekleyeceğim.





Windows Phone uygulamalarının ekran görüntüleri Visual Studio üzerinde Windows Phone Emulator ile alınabilmektedir. Emulatör Windows Phone işletim sistemini büyük ölçüde gerçeğe uygun olarak simule edebilmesine rağmen telefonun device'ları için zayıf destek sunmaktadır. Bu nedenle kamera uygulamalarında kameradan gelen görüntü için yapay bir görüntü oluşturmaktadır. 

LifeloggingCCPhone uygulamasının  Windows Phone üzerinde sürekli çalışması için kilit ekranının zaman aşımı değeri "Asla" yapılması gerekmektedir. Çekim esnasında gelen telefonlar ve diğer bildirimler çekimi engellemememektedir. Çekim esnasında kullanıcı telefon etmeye çalışırsa "Başlangıç" ekranına dönmesi gerektiğinden dolayı uygulama çalışmasını sona erdirecektir. Ayrıca çekim esnasında tuşları kullanarak fotoğraf çekilmek istendiğinde fotoğraf çekimi devreye girmeyecektir.

20 Mart 2013 Çarşamba

Development of LifeLogging Applications - Progress Report

Yaşamgünlüğü Uygulamalarının Geliştirilmesi - Gelişim Raporu

"Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" isimli projeye devam ediyorum. 20 Şubat 2013' tarihinden bu güne geçen bir aylık sürede gerçekleştirdiğim çalışmalar şu şekildedir:

Yaşam günlüğü uygulamalarından elde edilen görüntüleri öğrenme deneyimlerinin yönetimi amacıyla değerlendirmek amacıyla kullanacağım AllMyListsLE yazılımını geliştirmeye devam ettim. Bir cihazdan bir gün içerisinde kaydedilecek görüntü sayısı 2880. Yazılım ekrana aynı anda 200'den fazla görüntüyü yüklemekte zorlanıyor. Sorunun kaynağı kullanılan StackPanel'de Virtualizing yapılamaması. Bu sorunu aşmak amacıyla bir saat çubuğu oluşturdum ve görüntülerin birer saatlik dilimler halinde yüklenmesini sağladım. Kullanıcı saat çubuğunda ayrıca o güne ait saat dilimlerinde kaç görüntü bulunduğunu da görebilmekte. 

Bu çubukta aynı zamanda görüntülerin "Döşeme" ya da "Liste" şeklinde olmasını sağlayan düğmeler de bulunmakta. Liste şeklindeki görüntülemede görüntüler yatay bir taşıyıcıda sıralanmakta ve seçilen resmin büyütülmüş hali altta görüntülenmekte. Döşeme şeklindeki görüntülemede görüntüler ekrana ızgara şeklinde yerleştirilmekte, kullanıcı çift tıkladığı resmi bir pop-up pencerede büyük boyda görüntüleyebilmekte.


Kullanıcı görüntüler üzerinde seçim gerçekleştirerek bu seçimle ilişkili kayıt oluşturabilmekte  ya da seçili görüntüleri seçili bir kayıtla ilişkilendirebilmekte. Böylece küçük zaman dilimlerine yönelik kayıt girişi daha anlaşılır hale geldi.

Saat bazında görüntülemenin yanısıra 6 dakikada bir görüntü olmak üzere tüm güne ait görüntülerin listelenmesi sağlandı.



AllMyListsLE yazılımı aynı zamanda genel amaçlı bir liste yönetimi aracı olduğundan dolayı yeni liste oluşturulurken kolayca "LifeLog" ya da "MyList" türü liste oluşturulmasına olanak sağlandı.Böylece kullanıcılar yaşam günlüğü  listeleri (LifeLog) ve kullanıcı tarafından oluşturulan listeler (MyList) olmak üzere iki farklı yapıdaki listeleri yönetebileceklerdir.

Yazılım geliştirmeye paralel olarak informel öğrenme deneyimlerinin yönetimi amacıyla  bir uygulama yaklaşımı geliştirmeye başladım. Bu amaçla öğrenme deneyimlerinin betimlenmesini sağlayacak bir sihirbaz (Wizard) tasarımı üzerinde çalışmaya başladım. Bu çalışmaları "Yaşam Deneyimlerini Kaydetme ve Öğrenme Deneyimlerini Betimleme Süreci" isimli bir belgede topladım. Uygulama sürecine ait taslak çalışmaya http://kisiselogrenmeortamlari.blogspot.com/2013/03/the-process-of-learning-experiences.html sayfasından erişilebilir.

Uygulama sürecinin zaman boyutuna göre yapısı aşağıdaki gibi verilebilir:

Yaşam Deneyimlerini Kaydetme ve Öğrenme Deneyimlerini Betimleme Süreci
  1. LifeLoggingCC, LifeLoggingCCPhone, LifeLoggingSC ve giyilebilir lifelogging kameralarla 30 saniyede bir sürekli olarak kamera görüntüsü ve ekran görüntüsü yakala ve çalışma bilgisayarına senkronize et (Eş zamanlı)
  2. AllMyListsLE yazılımında bir LifeLog listesi ile günlük görüntüleri tara ve günlük eylemleri detaylı olarak kaydet (Birkaç gündebir) (Bu işlem bir görüntü düzeyinden başlayarak birden fazla görüntü, bir saat, birden fazla saat, bir gün, bir ay, bir yıl düzeylerinde olabilmektedir. (Birden fazla gün, birden fazla ay ve birden fazla yıl seçimi bulunmamaktadır. Bu zaman aralıkları için gün, ay ve yıl düğümlerine kayıt ekleyerek bilgi girişi yapılabilir.)
  3. Günlük kayıtları tarayarak yerler, kişiler, olaylar, varlıklar, duygular, özellikler ve davranışlara ait bilgileri ilgili MyList listelerine gir. (En geç haftada bir)
  4. LifeLog listeleri ile yaşam deneyimlerinden günlük öğrenme deneyimlerini sihirbaz yardımıyla çıkart ve geçmiş, güncel ve geleceğe ait kayıtlar oluştur. (Birkaç günde bir)
  5. Günlük kayıtları tarayarak yaşam boyu öğrenme projesine ait MyList listesinde geçmiş, güncel ve gelecekle ilgili başlıklara işlenmiş kayıtları gir. (En geç haftada bir)
  6. Yaşam boyu öğrenme projesine ait MyList listesini kullanarak geleceği planla ve geçmişi değerlendir (Haftalık, aylık, dönemlik, yıllık)
Her iki liste türü AllMyListsLE yazılımı kullanarak yönetilebileceği gibi, LifeLog için AllMyListsLE yazılımı, MyList listeleri için ise AllMyListsMetro yazılımı ayrı ayrı kullanılabilir.

Geliştirilen yazılımlarla burada açıklanan süreci şu anda gerçekleştirmek mümkün olabilmekte. Projenin bundan sonraki aşamasında günlük görüntü kaydedilmesinin ve görüntülere ait veri akışının daha esnek olması, AllMyListsLE yazılımının daha kullanıcı dostu hale getirilmesi gibi işlemler geliştirmeler yapılacaktır. Tüm kodların gözden geçirilmesi, açıklamalarının  oluşturulması, sınıf diyagramlarının çıkartılması, sınıfların, alanların, özelliklerin, yöntemlerin ve olayların standartlaştırılması gibi yazılım mühendisliği işlemleri gerçekleştirilecektir. Diğer taraftan LifeLog uygulamaları ile AllMyListsLE yazılımının paketlenmesi, dağıtımı, temin edilmesi, kurulması, birbiriyle bütünleştirilebilmesi, veri güvenliğinin sağlanması, yazılımların kaldırılabilmesi, ve dokümantasyon gibi süreçler de ele alınacaktır. Yazılımların ortak bir grafik kimliğine kavuşturulması, kullanıcı arayüzlerinin bir örnek hale getirilmesi, yerelleştirme ve küreselleştirme özelliklerinin gözden geçirilmesi, hakkında ve yardım içeriklerinin oluşturulması, projeye ait bilgi verilmesi gibi detaylar da zaman alacaktır.

12 Mart 2013 tarihinde proje kapsamında istenen Nokia Lumia 920 cep bilgisayarları geldi. Bu tarihten sonra daha önceleri Visual Studio içerisinde emülatör kullanarak yazdığım LifeLoggingCCPhone yazılımını gerçek telefon üzerinde deneyerek geliştirmeye başladım.