camera capture etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
camera capture etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

31 Mayıs 2013 Cuma

Hardware of LifeLogging Project

LifeLogging Projesinin Donanımları

"Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" projesinde geliştirme ve uygulama sürecinde giyilebilir yaşam günlüğü kameraları, akıllı telefonlar, tabletler, diz üstü bilgisayarlar ve masaüstü bilgisayarlar kullanılacaktır.  Windows Phone 8 yüklü olan Nokia Lumia 920 model akıllı telefonlar 12 Mart 2013 tarihinde temin edilmiştir. Bu telefonlarda projede geliştirilen LifeLoggingCCPhone yazılımı kullanılacaktır. Uygulayıcılar hareket halindeyken ya da bilgisayarları başında değilken bulundukları ortamı görüntülemek istediklerinde bu yazılımdan yararlanacaklardır.
30 Mayıs 2013 tarihinde ise tümünde Windows 8 Pro işletim sistemi yüklü olan tablet, dizüstü ve masaüstü bilgisayarlar gelmiştir. 

Projede tablet bilgisayar olarak Samsung Ativ Smart PC Pro kullanılacaktır. Bu cihazda projenin uygulama sürecinde LifeLoggingSC, LifeLoggingSCDesktop ve LifeLoggingCC yazılımları yüklü olacaktır. Uygulayıcıların bu tableti mobil durumda iken ya da iş dışında sosyal medyaya erişirken ekran görüntülerini kaydetmek ya da ortamı görüntülemek amacıyla kullanacakları öngörülmektedir.
Projede kullanılacak olan dizüstü bilgisayarlar için Lenovo IdeaPad Yoga 13 seçilmiştir. Bu bilgisayarlarda da LifeLoggingSC, LifeLoggingCC ve LifeLoggingSCDesktop çalışacaktır. Uygulayıcılar bu bilgisayarı iş ortamı dışında seyahat halindeyken profesyonel kullanım anında ekran ve ortam görüntülerini kaydetmek amacıyla tercih edeceklerdir. 
Projede kullanılacak masaüstü bilgisayar olarak Sony Vaio L seçilmiştir. Bu bilgisayar ev ortamında kullanılacaktır ve diğer yazılımların yanısıra AllMyListsLE ve LifeLoggingTransporter yazılımları için kullanılacaktır. Bu yazılımlarla yaşam ve öğrenme deneyimlerini yönetebileceklerdir.
Projede kullanılacak donanımların arasında sadece giyilebilir yaşamgünlüğü kameraları henüz temin edilememiştir. Bu donanım türü için Autographer ya da Memoto marka giyilebilir kameralar düşünülmektdir. Henüz her iki kamera da piyasaya sürülmemiştir.



Uygulayıcılar bu kameraları günlük yaşamlarında içinde bulundukları ortamı kaydetmek amacıyla kullanacaklardır.

18 Nisan 2013 Perşembe

Transfer Images From SkyDrive Folders To Local Folders

Görüntüleri SkyDrive Klasörlerinden Yerel Klasörlere Taşıma

Önceki yayından günümüze geçen süre içerisinde bir Windows Store uygulaması olan LifeLoggingCC yazılımının masaüstü sürümünü geliştirdim. LifeLoggingCCDesktop olarak adlandırdığım bu yazılım Windows 7 ve Windows 8 masaüstünde çalışmakta ve yerel klasörlere erişebildiği için doğrudan SkyDrive klasörüne kayıt yapabilmektedir. Kamera görüntüsü kaydeden yazılımlar genellikle kamera görüntüsünü önce ekrandaki bir "image" nesnesine yansıtmakta ve bu nesne üzerinden kayıt gerçekleştirmektedirler. Bu durum kullanılan API'lere göre değişen çeşitli sorunlara neden olmaktadır. Bazı durumlarda "image" üzerin başka bir pencere geldiğinde "overlay" gerçekleşmekte ve kaydedilen resimde üstteki pencereye ait parça da görünmekte. Bazı durumda da "image" 'ı içeren pencere küçültüldüğünde görüntü alınamamakta. Bu nedenle LifeLoggingCCdesktop'u geliştirirken image kullanmayan bir çözüm aradım ve OpenCV'yi keşfettim. OpenCV'yi .Net ortamında kullanmak amacıyla EMGU.CV wrapper'inı kullandım. Sonuçta LifeLoggingSC şeklinde çalışan bir uygulama ortaya çıktı.



Bu arada LifeLoggingCC yazılımını LifeLoggingCCPhone'da olduğu gibi görüntüleri doğrudan SkyDrive'a "upload" yapacak şekilde yeniden düzenledim. Bu amaçla Live SDK 5.3 kullandım.

 "Capture" Ekranı

"Images" Ekranı

"Upload" Ekranı

4 Nisan'daki http://personalinformationsystems.blogspot.com/2013/04/data-gathering-from-lifelogging-devices.html sayfasında LifeLogging yazılımlarıyla oluşturulan ve SkyDrive'da biriken görüntülerin yerel klasörlere aktarılması amacıyla LifeLoggingTransporter  isimli bir uygulamanın geliştirilmesi gerektiğini belirtmiştim. Geçen süre içerisinde LifeLoggingTransporter programını tamamladım.

Program kullanıcıya üç seçenek sunmaktadır. Bunlardan birincisi LifeLoggingSC ve LifeLoggingCCDesktop uygulamalarının oluşturduğu ve SkyDrive altındaki Resimler\LifeLogging klasörüne kaydettikleri ekran görüntüleri ve kamera görüntülerinin buradan alınarak yerel Resimlerim\LifeLogging klasörüne taşınmasını sağlıyor. İkinci seçenek LifeLoggingCC ve LifeLoggingCCPhone Windows Store uygulamalarının oluşturduğu ve doğrudan SkyDrive'a "upload" yaptıkları kamera görüntülerinin yerel klasörlere taşınmasını sağlamaktadır. Üçüncü seçenek ise giyilebilir yaşam günlüğü kameralarının görüntülerinin yerel klasörlere aktarılması amacıyla rezerv edilmiştir.


 "Seçenekler" Ekranı


"Birinci Aşama" Ekranı


"İkinci Aşama" Ekranı

Taşıma işlemleri iki aşamadan oluşmaktadır. Birinci aşamada SkyDrive klasörlerindeki görüntüler belirlenmekte ve kullanıcıya raporlanmakta, ikinci aşamada ise görüntüler yerel klasöre aktarılarak SkyDrive'dan kaldırılmaktadır.

Bu düzenlemeler sonucunda proje kapsamında ihtiyaç duyulan yazılımların tümü temel işlevlerini yerine getirecek düzeyde geliştirilmiş oldu. Geliştirilen yazılımların genel durumu aşağıdaki tabloda verilmiştir:




Ortamlar
Programlar
 Kullanılan API
Windows 7
Windows 8 Masaüstü
Windows 8 Store
Windows Phone 8
LifeLoggingSC
.Net 4.0
X
X
1
2
LifeLoggingCC
.Net 4.5 & Live SDK 5.3
X
LifeLoggingCCDesktop
.Net 4.0
EMGU SDK (.Net Wrapper for OpenCV)
X
X
3
LifeLoggingCCPhone
.Net Phone 8 SDK & Live SDK 5.3
X
LifeLoggingTransporter
.Net 4.0
X
X
AllMyListsLE
.Net 4.0
X
X
AllMyListsMetro (Tercihe bağlı)
.Net 4.5
X
1 Windows 8 Store uygulamalarının ekran görüntüsü almaları OS düzeyinde engellenmiştir.
2 Windows Phone 8 uygulamalarının ekran görüntüsü almaları OS düzeyinde engellenmiştir.
3 LifeLoggingCCDesktop Windows 8 masaüstünde çalıştırıldıktan sonra Windows Store uygulamalarına geçildiğinde de ekran kaydetmeye devam etmektedir.

Bundan sonraki aşamada AllMyListsLE yazılımına ağırlık verilecektir. Gerçek görüntüler ile denemeler gerçekleştirilecek, yazılıma Öğrenme Deneyimlerini Betimleme Sihirbazı eklenecek, yazılımın öğrenme deneyimlerinin kaydedilmesi, planlanması ve değerlendirilmesi amacıyla kullanımı araştırılacaktır.

LifeLogging yazılımlarında ise çok kameralı bilgisayarlarda kamera seçimi olanağı sağlanacaktır. Görüntülere konum ve IP bilgisi gömülmesi araştırılacaktır. Ayrıca tüm yazılımların görsel yapısı üzerinde çalışılacaktır. Projenin uygulama aşamasına kadar geçecek sürede yazılımların ayrıntılı kurulum ve kullanım testleri gerçekleştirilecek, dokümantasyonu tamamlanacaktır.

4 Nisan 2013 Perşembe

Data Gathering from LifeLogging Devices with the Personal Cloud Storage Services

Yaşamgünlüğü Cihazlarından Bulut Depolama Hizmetleri İle Veri Toplama

"Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" projesinde kullanıcıların yaşamgünlüğü cihazlarını kullanarak gerçekleştirdikleri günlük kayıtlarının  depolanması ve biraraya getirilmesi süreci yavaş yavaş olgunlaşmaya başladı. 

Proje kapsamında kullanıcıların tüm bilgisayarlarından 30 saniyede bir ekran görüntülerinin alınması, cep bilgisayarları ve taşınabilir yaşam günlüğü kameralarıyla da 30 saniyede bir fotoğraf çekilmesi öngörülmüştü. Gelinen aşamada aygıtların görüntüleri Microsoft SkyDrive bulut depolama hizmetini kullanarak biraraya getirmeleri sağlandı. 

Ekran görüntüsü kaydetmek amacıyla kullanılan LifeLoggingSC ve LifeLoggingSCWin7 yazılımları görüntüleri bilgisayardaki SkyDrive klasörü altındaki LifeLogging klasöründe oluşturulan yıl, ay, gün tarihli klasörlerin içerisinde açtıkları kendilerini tanımlayan klasörlere kaydetmektedirler. 

Fotoğraf çekmek amacıyla kullanılan LifeLoggingCCPhone yazılımı ise görüntüleri kullanıcının http://skydrive.live.com sitesine SkyDrive uygulamasını kullanmadan kendisi yüklemektedir. Kullanılan Microsoft Live SDK 5.3 ile kullanıcı SkyDrive'da kendisine ait oturum açabilmektedir. Bu aşamada henüz sadece SkyDrive'in bilinen klasörlerine kayıt yapılabilmektedir. Sorun çözüldüğünde resimler SkyDrive\Resimler\LifeLogging klasörü altında yıl, ay, gün, cihaz klasörleri altına kaydedilecektir.

Windows 8 uygulaması olarak geliştirilen LifeLoggingCC ise şu anda kullanıcının Resimlerim\LifeLogging klasörüne kayıt yapmaktadır, ama bu yazılımın da görüntüleri online olarak SkyDrive sitesine yüklemesi sağlanacaktır. Ayrıca Windows 7 ve 8 altında masaüstü uygulaması olarak çalışacak bir LifeLoggingCCWin7 programı da esneklik sağlayacaktır. "CC" programları şu aşamada sadece bir kamerayı kullanabilmektedirler. Programlara cihazdaki kullanılabilir bütün iç ve dış kameraların arasından seçim yapma olanağı eklenmesi gerekmektedir.

Gerçekleştirilen tasarımın daha genel amaçlı olması amacıyla ekran kaydedici ve kamera görüntüsü kaydedici cihaz sayısında bir kısıtlama yapılmamıştır.  Kullanıcılar bilgisayarlarını ve telefonlarını uygun bir şekilde isimlendirmeleri koşuluyla sınırsız cihaz tanımlayabilirler. Bu aşamada taşınabilir yaşam günlüğü kamerası henüz temin edilmemiş olduğundan dolayı bu aygıtların nasıl isimlendirileceği konusunda bir deneyim bulunmamaktadır.

Diğer taraftan aynı bilgisayarları birden fazla kullanıcının kullanılması durumunda, kullanıcıların birbirlerinden ayırt edilebilmeleri için her kullanıcının bilgisayarı kendisine ait ayrı bir oturumda kullanması gerekmektedir. Şu anda LifeLoggingSC ve LifeLoggingSCWin7 yazılımları cihaz adı ve kullanıcı adına göre kayıt yapmaktadırlar.



Bu yöntemle Memutlu-Fujitsu bilgisayarını kullanan Memutlu kullanıcısının 4 Nisan 2013 tarihine ait ekran görüntüleri
C:\Users\memutlu\SkyDrive\Resimler\LifeLogging\2013\2013.04\2013.04.04\MEMUTLU-FUJITSU-ScreenCapture
klasörüne kaydedilmektedir. SkyDrive uygulaması bu dosyaları kendiliğinden http://skydrive.live.com bulutuna yüklemekte ve kullanıcının SkyDrive uygulaması kurulu olan bütün bilgisayarlarına güncellemektedir. 

Denemelerde kullanmakta olduğum ve kullanmayı planladığım cihazlar için belirlediğim cihaz klasörlerinin isimleri aşağıdaki gibi olacaktır.


LifeLoggingSC & LifeLoggingSCWin7
MEMUTLU-LENOVO-ScreenCapture
MEMUTLU-FUJITSU-ScreenCapture
MEMUTLU-MACBOOK-ScreenCapture
MEMUTLU-HP-ScreenCapture
MEMUTLU-SAMSUNG-ScreenCapture
LifeLoggingCCPhone
MEMUTLU-NOKIA-CameraCapture
LifeLoggingCC & LifeLoggingCCWin7
MEMUTLU-LENOVO-CameraCapture
MEMUTLU-FUJITSU-CameraCapture
MEMUTLU-MACBOOK-CameraCapture
MEMUTLU-HP-CameraCapture
MEMUTLU-SAMSUNG-CameraCapture
            Autographer
                        MEMUTLU-AUTOGRAPH-CameraCapture
            Memoto
                        MEMUTLU-MEMOTO-CameraCapture


Bütün cihazların görüntü göndermek amacıyla bulut kullanmaları önemli miktarda veri trafiğine yol açacaktır. Herhangi bir anda bir cihazın kullanılması ve günde ortalama 16 saat aktif olunması durumunda günlük 1 GB mertebesinde veri aktarımı oluşacaktır. Sistemin optimizasyonunu daha sonraki aşamalarda ele almayı planlıyorum. Bu amaçla akla gelen  iyileştirmelerden birisi belirli bir limit içerisinde aynı içeriğe sahip görüntülerin ayıklanmasıdır. 

AllMyListsLE yazılımında yeni yaşam günlüğü listesi olarak SkyDrive\LifeLogging klasörü tanımlandığında sorunsuz çalışmaktadır. Dolayısıyla sistem, veriler sürekli SkyDrive'da tutularak kullanılabileceği gibi, SkyDrive\LifeLogging klasörünün içeriğini düzenli aralıklarla yerel diske kopyalanarak da kullanılabilir. Bu durumda görüntüler SkyDrive'dan silinerek SkyDrive'ın şu andaki kapasitesi olan 7 GB limiti altında kalınabilir. Veriler sürekli SkyDrive'da tutulacak ise yıllık 100 GB için 50$ ödenerek bu işlem gerçekleştirilebilir. Günümüzde 1 TB kapasitesindeki taşınabilir disklerin fiyatlarının 100$ civarında olduğu düşünülürse SkyDrive'ın sadece aktarım için kullanılması, görüntülerin büyük kapasiteli taşınabilir disklerde tutulması daha çok tercih edilebilir. Bu amaçla LifeLoggingTransporter isimli bir aktarım programı yazılmasında yarar vardır. LifeLoggingTransporter hem giyilebilir yaşam günlüğü kamerasına ait görüntülerin hem SkyDrive'ın kökündeki kamera görüntülerinin hem de SkyDrive'daki ekran görüntülerinin kullanım ortamına aktarımını gerçekleştirebilir. Bu yazılım bağımsız bir yazılım olabileceği gibi AllMyListsLE içerisinde de yeralabilir.

"SC" yazılımlarının Microsoft SkyDrive yerine Google Drive ya da DropBox kullanmalarını sağlamak son derece kolaydır. Bu amaçla yazılımlara bir "ayar" ekleyerek masaüstü Google Drive ya da masaüstü DropBox uygulamalarının klasörlerini kullanmalarını sağlamak yeterli olacaktır. "CC" yazılımlarında ise "online upload" amacıyla Google Drive SDK ve DropBox SDK'larının kullanılması gerekmektedir. Bu nedenle "CC" yazılımlarının GoogleDrive ve DropBox bulutlarına kayıt yapabilmelerini bu proje kapsamının dışında tutuyorum.



29 Ocak 2013 Salı

Design of Lifelogging Image Capture Applications - 2

Yaşamgünlüğü Görüntü Yakalama Uygulamaları Tasarımı - 2

Aralık 2012 ayı içerisinde tasarımına başladığım görüntü yakalama yazılımlarına Ocak 2013 ayı içerisinde bir takım ayarlar ve sensör bilgilerini yakalama özellikleri ekledim.

LifeLoggingSC ekran görüntüsü yakalama yazılımına eklenen özellikler

LifeLoggingSC yazılımında Image Quality, Image Size, Capture Folder, Capture Interval ve File Prefix değerleri ayarlanabilir hale getirildi. 


Böylece kullanıcı programın Settings menüsünden yararlanarak resim kaydetme aralığı, resim kalitesi (jpeg quality), ekran çözünürlüğüne göre belirlenen resim büyüklüğü ve görüntülerin kaydedildiği klasörü belirleyebilmektedir.


LifeLoggingSC'de yapılan diğer bir değişiklik ise Screen Video Recording özelliğinin kaldırılması olmuştur. Böylece programın Expression Encoder bağımlılığı sona erdirildi. Ekran yakalama yazılımını gelştirmeye ilk başladığım günlerde yazılım forumlarında masaüstünde çalışan ekran yakalama yazılımlarının Windows 8 Başlat Menüsü ve Windows Store uygulamalarına ait ekran görüntülerini kaydetmediğine ilişkin çok sayıda yorumla karşılaşmıştım. WPF 4.5 ile bir masaüstü uygulaması olarak geliştirdiğim LifeLoggingSC programında bu sorun bulunmamaktadır. Hem masaüstü hem de Windows Store ekranları kaydedilebilmektedir. 

LifeLoggingCC kamera görüntüsü yakalama yazılımına eklenen özellikler

LifeLoggingCC'de ise Capture Interval, Image Quality ve Capture Prefix seçenekleri eklendi.

  
Bu yazılımda görüntü büyüklüğü 640x480 olarak sabitlenmiştir ve görüntü kalitesi henüz değiştirilememektedir.



LifeLoggingCCPhone kamera görünütüsü yakalama yazılımına eklenen özellikler

LifeLoggingCCPhone'da ise Capture Interval seçeneği eklendi. Standart 640x480 büyüklüğünde resim kaydedilmekte ve henüz bu aşamada görüntü kalitesi ve kaydetme klasörü (CameraRoll) değiştirilememektedir. 

Sensörler

Uygulamalara eklenen diğer bir özellik ise Tarih ve Saat etiketlerinini yanısıra sensör bilgilerinin algılanması olmuştur. 

LifeLoggingCC  görüntü kaydederken aynı zaman konum bilgisi, hız bilgisi ve ışık düzeyi bilgisini de belirleyebilmektedir. LifeLoggingCC denemeleri emülatörde gerçekleştirilmektedir. Gerçek denemeler için Windows 8 yüklü bir tabletin gelmesini bekliyorum.


LifeLoggingCCPhone ise görüntü kaydederken konum ve hız bilgisini de algılamaktadır. Programın denemeleri emulatör üzerinde gerçekleştirilmekte olduğundan dolayı gerçek denemeler için bir Windows Phone 8 telefonunun gelmesini beklemekteyim.


LifeLoggingSC'ye herhangi bir sensör algılaması eklenmemiştir. Sensör bilgileri henüz bu aşamada kaydedilmemektedir.  Sensör bilgilerinin resimlere gömülebilmesi için araştırma yapacağım.

Uyku modu

Geliştirilen ekran ve kamera görüntüsü yakalama yazılımlarının sürekli çalışabilmesi için üzerlerinde çalıştıkları aygıtların uyku moduna geçmemeleri gerekmektedir. Uyku modunda yazılımlar ya son yakaladıkları görüntüyü saklamaya devm ediyorlar ya da siyah ekran kaydediyorlar. Masaüstünde uyku modunu kapatmak çok sorun yaratmaz. Tablet'te bu durum kullanım süresini etkileyecektir. Telefonda ise uyku modu iptal edilebilir mi araştırılacak. 

31 Aralık 2012 Pazartesi

Design of Lifelogging Image Capture Applications

Yaşamgünlüğü Görüntü Yakalama Uygulamaları Tasarımı

Anadolu Üniversitesi Proje birimine sunduğum “Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması” isimli BAP önerisi kapsamında bir dizi yaşam günlüğü yazılımı geliştirilmesi gerekmektedir.

Günümüzde bilgi çalışanlarının öğrenme deneyimleri ağırlıklı olarak bilgisayar ortamında gerçekleşmektedir. Bilgisayar ortamı dışında gerçekleşen öğrenme deneyimleri ise yüz yüze iletişim, basılı malzeme okuma, ders/seminer/konferans/video vb. izleme, müze/sergi/doğa vb. gezme gibi etkinliklerden oluşmaktadır. Bireyin uyanık bulunduğu sürelerdeki öğrenme deneyimlerini kaydetmek için bireyin kullandığı bilgisayarların ekran görüntülerinin kaydedilmesi ve bireyin bilgisayar ortamı dışında etkinliklerine ait kamera görüntülerinin kaydedilmesi yeterli olacaktır.

Burada amaçlanan deneyime ait içeriğin kaydedilmesi değil, deneyimin daha sonra kolayca hatırlanmasını sağlayacak görüntülerin kaydedilmesidir. Kayıt işlemi 30 saniyede bir alınan görüntülerden oluşacak ve bireyin özel anları dışındaki süreleri kapsayacaktır.

Bu amaçla proje önerisini sunmuş olduğum 15 Aralık 2012 tarihinden itibaren çalışmaya başladım ve LifeLoggingSC, LifeLoggingCC ve LifeLoggingCCPhone isimlerinde üç yaşam günlüğü kaydetme yazılımı geliştirdim. Yazılımlar bu aşamada taslak düzeyinde olsalar da kendilerinden beklenen belirli zaman aralıklarında görüntü kaydetme işlevini yerine getirmektedirler.

LifeLogging Camera Capture ve LifeLogging Camera Capture Phone yazılımları
Bireyin çevresindeki görüntülerin kaydedilmesi için giyilebilir yaşam günlüğü kamerasının kullanılması gerekmektedir. Fakat proje önerisi aşamasında temin edilebilir bir giyilebilir yaşam günlüğü kamerası bulunmamaktadır. Microsoft SenseCam’in ticari sürümü olan Vicon Revue’nün yılsonu itibariyle satışı durdurulacağı ilan edildi, yerine çıkacak olan Autographer cihazı ise henüz temin edilebilir durumda değil. Aynı şekilde bir kickstarter projesi olan Memoto cihazı ise Şubat ayından sonra satışa başlanacak. Deneyim kazanmak ve B planı olarak kullanabilmek amacıyla projede kullanıcıların bir tablete takılı bir webcam ile ya da bir akıllı telefona ait kamera ile çevrelerine ait görüntüleri kaydetmeleri öngörüldü. Böylece Windows 8 tabletlerde çalışan LifeLogging Camera Capture ve Windows Phone 8 akıllı telefonlarında çalışan LifeLogging Camera Capture Phone isminde sürekli olarak belirli aralıklarda kamera görüntüsü kaydeden yazılımları geliştirdim.

Kamera görüntüsü yakalamayla ilgili yaklaşımları gözden geçirmek amacıyla, sahip olduğum web cam Windows 8 altında çalışmadığından dolayı başlangıçta Windows 7 üzerinde değişik denemeler yaptım.  Bu denemelerde aşağıda verdiğim değişik görüntü yakalama teknolojilerine ait örnekleri inceledim, bu örnekleri verilen zaman aralıklarında görüntü kaydedecek şekilde tekrar programlamaya çalıştım:
  • WIA Windows Image Acquisition
  • AVICAP.DLL
  • Directshow
  • TWAIN
  • Microsoft Expression Encoder
Bu örneklerde en iyi sonucu http://www.codeproject.com/Articles/285964/WPF-Webcam-Control sitesindeki örnek üzerindeki denemelere aldım. Bu yaklaşımda Microsoft Expression Encoder’a ait API’ler çağrılmakta ve bu amaçla hedef bilgisayarda Microsoft Expression Encoder SP2  (21 Mb) kurulu olması gerekmektedir.

Daha sonra Windows 8 için bir webcam temin ettim ve kamera görüntüsü kaydeden bir Windows Store uygulaması geliştirmeye başladım. Sonuç olarak verilen zaman aralığında kamera görüntüsünü kaydeden ve bu görüntüyü kullanıcıya ait Pictures Library’ye zaman damgası şeklinde bir isimle kaydeden bir uygulama ortaya çıktı (Resim 1.). 

Geliştirme aşamasında CameraCaptureUI Sample’dan (http://code.msdn.microsoft.com/windowsapps/CameraCaptureUI-Sample-845a53ac/file/58120/9/CameraCaptureUI%20Sample.zip) yararlandım, fakat bu örnekteki API işime yaramadığı için Windows.Media.Capture  API’si kullandım.
Bu uygulama çalıştırıldıktan sonra başka bir uygulamaya geçildiğinde,  arkaplanda da çalışmaya devam etmektedir.


Resim 1. LifeLoggingCC uygulamasına ait bir görüntü.

Bir sonraki aşama Windows Phone 8 altında çalışacak bir uygulama geliştirmekti. Windows Phone SDK 8.0’yı indirdim. Fakat telefon emülatörünün çalışması için bilgisayarın donanımsal sanallaştırma olanağına sahip olması gerektiği ortaya çıktı. Kullandığım iş istasyonları bu özelliğe sahip olmadığından dolayı SDK’yı bir laptopa kurarak kullanmaya başladım. Dolayısıyla Visual Studio laptopda biraz yavaş kaldı.

Windows Phone 8 geliştirme altyapısı Windows Store uygulaması geliştirme altyapısından faklı olduğundan dolayı programın sıfırdan yazılması gerekmekteydi. Yine de Windows store uygulaması altında yazdığım CreatefileName() işlevi ile sürekli görüntü kaydetmeye başlama ile kaydetmeye son verme yaklaşımlarını (dispatcher.timer) yeni programa fazla değiştirmeden taşıyabildim. Burada BasicCamera Sample’dan (http://code.msdn.microsoft.com/wpapps/Basic-Camera-Sample-52dae359) yararlandım ve öncekinden çok farklı olan Microsoft.Devices.PhotoCamera API’si kullandım.


Resim 2. LifeLoggingCCPhone uygulamasına ait bir görüntü.

Visual Studio Phone Emulatörü bilgisayarın kamerasını kullanamadığı için örnekteki telefonun ekranındaki görüntü emülatör tarafından üretilen yapay bir görüntüdür. Fakat uygulama bu yapay görüntüyü klasöre kaydedebilmektedir. En iyi sonucu Windows Phone 8 telefonlar geldikten sonra almaya başlayacağım.

Program çalışırken bilgisayar uyku moduna geçtiğinde görüntü alınamamaktadır. Bu nedenle programın kullanılacağı tablette uyku modunun iptali gerekmektedir. Windows Phone API’leri uygulama arkaplana aktarıldığında fotoğraf çekilmesine izin vermediğinden dolayı uygulamanın sürekli ön planda çalışması gerekmektedir.

LifeLogging Screen Capture yazılımı
Projede bireylerin gün boyunca kullandıkları masaüstü, laptop ve tablet bilgisayarlarının ekran görüntülerinin kaydedilmesi amaçlanmaktadır. Projede ortak bir teknolojik zemin oluşturabilmek amacıyla kullanıcıya ait bütün bilgisayarların, laptopların ve tabletlerin Windows 8 işletim sistemi altında çalışması öngörülmüştür. Dolayısıyla geliştirilecek olan yazılımın da Windows 8 altında çalışması öngörülmektedir.

Windows 8 geliştirici forumlarını taradığımda Windows 8 altında güvenlik gerekçeleri nedeniyle her türlü ekran yakalama işleminin engellendiğinden bahsedildiğini gördüm. Gerçekten bu amaçla kullanılabilecek bir API bulunmamaktaydı. Forumlarda masaüstü uygulaması şeklinde yazılan ekran yakalama yazılımlarının da Başlat menüsüne geçildikten ve bir Windows Store uygulaması çalıştırıldıktan sonra görüntü almamaya başladıkları ifade edilmekteydi.

Bir kaç deneme sonunda uygulamayı Windows masaüstü programı biçiminde ve Microsoft Expression Encoder API’si kullanarak yazmaya karar verdim ve program çalıştı. Gerçekten de program masaüstünde çalıştırıldıktan sonra ekranı kaydetmeye başlıyor ve ardından başlat menüsüne geçildikten ve Windows Store uygulamaları çalıştırılmaya başlandıktan sonra da ekran görüntüsü kaydetmeye devam ediyor. Bu Microsoft’un farketmediği bir açık ise ve bu açığı gelecekte kapatmaya karar verirse bu yaklaşımın gelecekte kullanılması mümkün olmayacaktır.

Uygulama arkaplanda iken çalışmaya devam etmektedir. Fakat bilgisayar uyku moduna geçtiğinde program son çektiği resmi kaydetmeye başlamaktadır. Programın kullanılacağı bilgisayarda uyku modunun iptal edilmesi gerekmektedir.

Projede öğrenme deneyimlerine ait içerik kaydı yapılmaması, sadece hatırlatıcı ekran görüntülerinin kaydedilmesi öngörülmesine rağmen ekran görüntülerinin isteğe bağlı olarak video biçiminde kaydedilmesi olanağı da eklenmiştir.


Resim 3. LifeLoggingSC uygulamasına ait bir görüntü.

Sonraki aşamalar
Windows 8 Phone ile bir uygulamanın kendisine ait ekran görüntülerinin kaydedilmesine olanak sağlanmaktadır. Fakat bu olanağın uygulama arkaplanda çalışırken diğer uygulamalara ait ekran görüntüleri kaydedebileceğini sanmıyorum.

Yukarıda bahsedilen uygulamalara çekim aralığı, görüntü kalitesi ve dosya kaydetme klasörlerinin değiştirilebileceği bir “Ayarlar” özelliği eklenecektir. Diğer taraftan uygulamalara GPS vb. sensör verilerini yakalama ve görüntülerle birlikte bu sensör verilerini de kaydetme olanağı da eklenecektir.

Değişik bilgisayarlar ve telefonlarda elde edilen görüntülerin kullanılması/değerlendirilmesi amacıyla bir merkezde toplanması gerekmektedir. Bu amaçla manuel ya da bulut altyapısı kullanan değişik tasarımlara ait taslakları geliştirmeye başladım. Geliştirdiğim çözümlere izleyen yayınlarda yer vereceğim.