T.C. MARMARA ÜNİVERSİTESİ TEKNİK EĞİTİM FAKÜLTESİ ELEKTRONİK-BİLGİSAYAR EĞİTİMİ ANABİLİM DALI BİLGİSAYAR ve KONTROL ÖĞRETMENLİĞİ BİLİM DALI GPS SİNYALLERİ İLE KONUM BELİRLEME VE RAPORLAMA İŞLEMİ YAPMAYI SAĞLAYAN PROGRAMIN MOBİL VE WEB PLATFORMDA TASARIMI LİSANS TEZİ İbrahim ÖZGÖN Mesut KONAK İSTANBUL 2013 T.C. MARMARA ÜNİVERSİTESİ TEKNİK EĞİTİM FAKÜLTESİ ELEKTRONİK-BİLGİSAYAR EĞİTİMİ ANABİLİM DALI BİLGİSAYAR ve KONTROL ÖĞRETMENLİĞİ BİLİM DALI GPS SİNYALLERİ İLE KONUM BELİRLEME VE RAPORLAMA İŞLEMİ YAPMAYI SAĞLAYAN PROGRAMIN MOBİL VE WEB PLATFORMDA TASARIMI LİSANS TEZİ İbrahim ÖZGÖN Mesut KONAK Doç. Dr. Ali BULDU (Tez Danışmanı) İSTANBUL 2013 i TEŞEKKÜR Bu günlere gelmem için elinden geleni yapan anneme, manevi desteğini benden esirgemeyen kardeşime, çalışmanın her safhasında gayretini esirgemeyen ve özveri ile yaklaşan danışmanım Doç. Dr. Ali BULDU’ YA, teşekkür ederim. İbrahim ÖZGÖN Çalışmamızın başlangıcından bitimine kadar, benden yardımlarını esirgemeyen pek çok kişiye teşekkür borçluyum. Özellikle değerli hocam ve tez danışmanım Sayın Doç. Dr. Ali BULDU’ ya bana ayırdığı değerli zaman ve sağladığı destek için minnettarım. Bu günlere gelmemde büyük pay sahibi olan aileme ve dostlarıma teşekkürlerimi sunarım. Mesut KONAK ii İÇİNDEKİLER KISALTMALAR ........................................................................................................................................ 1 ÖZET ...................................................................................................................................................... 2 ABSTRACT.............................................................................................................................................. 2 1 GPS TAKİP SİSTEMLERİ ................................................................................................................. 3 1.1 1.2 1.3 2 GİRİŞ................................................................................................................................................ 3 AMAÇ .............................................................................................................................................. 3 İÇERİK .............................................................................................................................................. 3 ANDROID İŞLETİM SİSTEMİ ........................................................................................................... 4 2.1 GİRİŞ................................................................................................................................................ 4 2.2 GELİŞİM ............................................................................................................................................ 5 2.3 TANIM.............................................................................................................................................. 8 2.3.1 Handset layouts ................................................................................................................... 8 2.3.2 Depolama ............................................................................................................................. 8 2.3.3 Bağlantı ................................................................................................................................ 8 2.3.4 Mesajlaşma .......................................................................................................................... 8 2.3.5 Çoklu dil desteği ................................................................................................................... 8 2.3.6 Web tarayıcısı ...................................................................................................................... 8 2.3.7 Java desteği .......................................................................................................................... 9 2.3.8 Medya desteği ...................................................................................................................... 9 2.3.9 Streaming medya desteği .................................................................................................... 9 2.3.10 İlave donanım desteği ..................................................................................................... 9 2.3.11 Çoklu Dokunma(Multi-touch) .......................................................................................... 9 2.3.12 Bluetooth ......................................................................................................................... 9 2.3.13 Görüntülü arama(Video calling) ...................................................................................... 9 2.3.14 Çoklu Görev(Multitasking)............................................................................................. 10 2.3.15 Erişilebilirlik(Accessibility) .............................................................................................. 10 2.3.16 Ses tabanlı özellikler(Voice based features) .................................................................. 10 2.3.17 Bağlantı noktası oluşturma(Tethering) ......................................................................... 10 2.3.18 Ekran yakalama(Screen capture) .................................................................................. 10 2.3.19 Harici Bellek(External storage) ...................................................................................... 10 2.4 ARA YÜZ(INTERFACE) ........................................................................................................................ 11 2.5 UYGULAMALAR(APPLİCATİONS)........................................................................................................... 12 2.6 GELİŞTİRME(DEVELOPMENT) .............................................................................................................. 14 2.7 HAFIZA YÖNETİMİ ............................................................................................................................. 15 2.8 GÜVENLİK VE POLİTİKALAR ................................................................................................................. 15 2.9 LİSANS............................................................................................................................................ 16 3 MOBİL UYGULAMA GELİŞTİRME ORTAMLARI ............................................................................. 16 3.1 GİRİŞ.............................................................................................................................................. 16 iii 3.1.1 Symbian.............................................................................................................................. 17 3.1.2 iOS (eski adıyla iPhone OS) ................................................................................................. 18 3.1.3 Research In Motion Limited (RIM) (TSX: RIM, NASDAQ: RIMM) ........................................ 18 3.1.4 Bada ................................................................................................................................... 18 3.1.5 Windows Mobile ve Windows Phone ................................................................................. 18 3.1.6 Android ............................................................................................................................... 18 3.2 JAVA DEVELOPMENT KİT(JDK) ............................................................................................................ 19 3.3 ANDROİD SOFTWARE DEVELOPMENT KİT (SDK) ..................................................................................... 19 3.4 ECLİPSE IDE(INTEGRATED DEVELOPMENT ENVİRONMENT) ....................................................................... 19 3.5 ANDROİD UYGULAMA GELİŞTİRME ORTAMI KURULUMU .......................................................................... 20 3.5.1 Java Development Kit Yüklemesi ........................................................................................ 20 3.5.2 Android SDK(Software Development Kit) Yüklemesi .......................................................... 21 3.5.3 Eclipse IDE(Integrated Development Kit) yüklemesi .......................................................... 22 3.5.4 Sanal cihaz oluşturmak ...................................................................................................... 25 4 GPS (GLOBAL POSITIONING SYSTEM) ......................................................................................... 26 4.1 4.2 5 GİRİŞ.............................................................................................................................................. 26 GPS .............................................................................................................................................. 26 MARMARA GPS TAKİP SİSTEMİ(MARMARA GPS TRACKER) ........................................................ 32 5.1 GİRİŞ.............................................................................................................................................. 32 5.2 BENZER ÇALIŞMALAR......................................................................................................................... 33 5.3 SİSTEM TASARIMI ............................................................................................................................. 33 5.3.1 Mobil Platform ................................................................................................................... 33 5.3.1.1 Marmara GPS Takip Sistemi Programı Yazılması ..................................................................... 34 5.3.1.2 Client Bölümü.......................................................................................................................... 35 5.3.1.3 GPS Bilgisinin Elde Etme ve Verilerin Gönderilmesi ................................................................ 36 5.3.1.4 Telefonun Durumunu Dinle ve Kapanmasına İzin Verme ....................................................... 37 5.3.1.4.1 Intents ve Broadcast Receivers kavramları ........................................................................ 38 5.3.1.4.1.1 Dolaylı Intent’ler için Intent Filtreleri ........................................................................... 39 5.3.1.4.1.2 Dolaylı Intent’lerde Filtreleme İşlemi........................................................................... 40 5.3.1.4.1.3 Bir web sayfasının görüntülenmesi .............................................................................. 41 5.3.1.4.1.4 BroadCast Intent’leri .................................................................................................... 42 5.3.1.4.1.5 BroadCast Receiver ...................................................................................................... 43 5.3.1.5 Gelen çağrıları dinle, çağrı geldiğinde gelen çağrıya konum bilgisi gönderme ........................ 43 5.3.1.6 Konum bilgilerini, kullanıcının belirlediği aralıklar ile internet bağlantısı ile sunucuya kaydetme …………………………………………………………………………………………………………………………………………….44 5.3.1.7 Konum bilgilerinin Google Maps Android Api ile harita da gösterilmesi ................................. 45 5.3.1.7.1 Google Map Api Key Alma ................................................................................................. 45 5.3.1.7.2 Uygulamaya Google Map Api dahil edilmesi ..................................................................... 47 5.3.2 Sunucu Kısmı ...................................................................................................................... 50 5.3.2.1 5.3.3 Veritabanı Tasarımı ve Oluşturulması ..................................................................................... 50 Web Platform Tasarımı ...................................................................................................... 52 5.3.3.1 5.3.3.2 5.3.3.3 5.3.3.4 5.3.3.4.1 5.3.3.4.2 5.3.3.4.3 Giriş ......................................................................................................................................... 52 ORM(Object Relational Mapping) ve Entity Framework ......................................................... 52 Repository Tasarım Mimarisi(Repository Pattern) .................................................................. 53 MVC (Model-View-Controller) Tasarım Mimarisi(MVC Pattern) ............................................. 54 Model ................................................................................................................................ 54 View ................................................................................................................................... 54 Controller ........................................................................................................................... 55 iv 5.3.3.4.4 MVC (Model-View-Controller) Kullanımının avantajları .................................................... 55 5.3.3.5 Marmara GPS Web Projesinin Tasarımı .................................................................................. 55 5.3.3.6 JQuery-UI Map ile Konumların gösterilmesi............................................................................ 57 6 SONUÇ........................................................................................................................................ 58 7 KAYNAKÇA ................................................................................................................................. 59 v KISALTMALAR Kit Alet Çantası MVC Model-View-Controller JDK Java Development Kit SDK Software Development Kit IDE Integrated Development Environment API Application Programming Interface GPS Global Positioning System HTML Hyper Text Markup Language XML Extensible Markup Language PDA Personal Digital Assistant SQL Structured Query Language GPRS General packet radio service 3G Third generation 2G Second-generation 1 ÖZET Bu tez çalışmasında GPS(Global Positioning System) teknolojisinin, günümüzde popüler olarak kullanılan akıllı cep telefonları, navigasyon cihazları ve bazı gömülü sistemlerden konum bilgileri alınarak kullanıcıya sunulması amaçlanmıştır. Proje kapsamında son yıllarda ücretsiz ve açık kaynak kodlu olması özellikleri ile revaçta olan Google firmasının desteklediği Android OS, kökü çok eskiye dayanan ve gelişmesini hızla sürdüren Microsoft firmasının .NET teknolojisi kullanılmıştır. Bunun yanında geliştirilen proje çeşitli cihazlarda(akıllı cep telefonları, navigasyon cihazları) uygulanması anlatılmaktadır. ANAHTAR KELİMELER Mobil platformlar, Android platformu, GPS, Web Servis, .NET teknolojileri, Google Maps, Entity Data Framework ABSTRACT In this thesis work, GPS(Global Positioning System) technology,it is intended to establish a position determining system with integration of GPS(Global Positioning System) technology to today’s popular devices which are Smart Phones,Navigation devices and some of the embedded systems. Under this thesis work, in recent years with the fashionable features supported by Google's Android OS which is a free and open source, the root of the development of a very long-standing and continuing at Microsoft Corporation. NET technology is used. Moreover,describes the implementation of the project developed several devices (smart phones, navigation devices). KEYWORDS Mobile platforms, Android platform, GPS, Web Service, .NET technologies, Google Maps, Entity Data Framework 2 1 1.1 GPS TAKİP SİSTEMLERİ Giriş Akıllı cep telefonları, tablet bilgisayarlar veya navigasyon cihazlarının büyük bir kısmı Android işletim sistemi tabanlı çalışmaktadır. Teknolojik gelişmelerin, 3G ile iletişimi üst seviyelere çekmesi ve ucuza satışa sunması, akıllı cihazlarda internet kullanımını yaygınlaştırmıştır. Öte yandan akıllı cihazlarda bulunan GPS alıcıları ile cihazlar, aldığı konum bilgilerini programcıya sunabilmektedir Konum bilgisinin bildirimi önem kazanmakta, büyük şirket veya işyeri sahipleri, çalışanlarının konumlarını bildirmelerini istemektedirler. Başka bir örnek ise aileden verilebilir. Ebeveynler aile fertlerinin nerede bulunduklarını takip etmek istemekte, istenmeyen bir durumda onlara ulaşmak istemektedir. İstanbul, Ankara, Bursa, İzmir, Antalya ve daha birçok büyük şehirde her gün istenmeyen olaylar yaşanmakta ve ebeveynlerin kaygısı giderek büyümektedir. 1.2 Amaç Geliştirilen Marmara GPS Takip sistemi ile ister şirketler ister şahıslar, konum bilgilerinin takibini sağlayabilecektir. Günümüzde kullanılmakta olan sistemler büyük maliyetlere neden olmaktadır. Marmara GPS Takip sistemi ile Android işletim sistemi kullanan cihaza ücretsiz yüklenen uygulama ile takip maliyeti düşmektedir. 1.3 İçerik Marmara GPS Takip sistemi 2 aşamalı geliştirilmiştir. Projenin birinci aşamasında Android cihazlarda kullanılacak uygulama geliştirilmiştir. İkinci aşamasında ise web sitesi tasarımı yapılmıştır. Uygulama iki aşamadan oluşsa da amacı tektir. Android işletim sistemli cihaza yüklenen uygulama, konum bilgilerini kullanıcının belirlediği periyod aralıkları ile veritabanına kaydetmektedir. Android uygulama kişinin IMEI numarasına odaklı çalışmaktadır. IMEI numarası ile açılan kullanıcı bilgileri sürekli kaydedilmektedir. Kullanıcı konum takibini yapmak için web sitesine girerek kullanıcı girişini yapacak ve istediği tarih aralığı ile konumu çekebilecektir. Aile ve şirket için ise ek bir seçenek açılmıştır. Şirketler veya aileler siteye girerek bir şirket hesabı oluşturabilecektir. Açılan şirket hesabına ait bir şirket numarası verilecektir. Bu şirket numarası uygulamanın yüklü olduğu cihaza yazılarak güncellendiğinde artık cihazın konum bilgileri otomatik olarak şirket hesabı ile giriş yapıldığında da görüntülenebilecektir. Şirket veya aileler siteye giriş yaptığında 3 kullanıcılarının anlık konumlarına ulaşarak gittikleri yolun takibini yapabileceklerdir. İstenilen kişinin filtresini yaparak sadece onun izlediği yolu görebileceklerdir. Birinci aşamanın geliştirimi için Java programlama dili kullanılmıştır. Günümüzün yükselen gücü olan Android işletim sistemi, Java programlama dili ile programlamayı kolaylaştırmıştır. Uygulama geliştirmek için Eclipse IDE si ücretsiz olarak yüklenmiş ve geliştirmesi yapılmıştır. İkinci aşamada ise sektörün güçlü firması olan Microsoft firmasının C# programlama dili kullanılmıştır. C# programlama dili web tabanlı uygulamalarda programcıya büyük kolaylıklar sağlamaktadır. Ayrıca web uygulaması geliştirilirken MVC(Model-ViewController), Repository, Entity Framework gibi tasarım mimarileri kullanılarak kodun parçalar haline bölünerek takibi ve hata tespiti kolaylaştırılmıştır. 2 2.1 ANDROID İŞLETİM SİSTEMİ Giriş Linux tabanlı ve öncelik olarak dokunmatik ekranlar için (ÖR: akıllı telefonlar ve tablet bilgisayarlar) için tasarlanmıştır. Başlangıçta Google tarafından desteklenen Android Inc tarafından geliştirildi,[1]. Android; kendini mobil cihazlar üzerine açık standartlar geliştirmeye adamış donanım, yazılım ve telekomünikasyon şirketlerinin topluluğu olan Open Handset Alliance(Açık telefon ittifakı) tarafından 2007 yılında açıklandı.[2]. İlk Android telefon Ekim 2008’de satışa sunulmuştur.[3] Android açık kaynaklıdır. Kodları Apache Lisansı altında yayınlanmaktadır.[4] Açık kaynak kodlu oluşu cihaz üreticileri için serbestçe geliştirmeye imkân sağlamaktadır. Ayrıca Android üzerinde çalışan programlar Java nesne yönelimli programlama diliyle geliştirilmektedir. Ekim 2012 tarihinde Google Play Store da yaklaşık olarak 700,000 uygulamanın bulunduğu ve 25 milyar uygulamanın indirildiği tahmin edilmektedir.[5][6] Tüm bu faktörler Android işletim sistemini dünyanın en çok kullanılan platformu haline getirmiştir[7]. Aslında Android sadece telefonlar ve tabletler için gibi gözükse de bunun yanında televizyonlarda ve oyun konsollarında da kullanılmaktadır. Android açık doğası ile daha ileri düzey kullanıcılar için yeni özellikler eklemek toplum odaklı projeler için bir temel olarak açık kaynak kodu kullanmak için, geliştiriciler ve meraklıları için büyük bir topluluk teşvik etmiştir.[8] Diğer işletim sistemi geliştiricileri de bu platforma geçiş için zamanla adım atmışlardır. 2012 üçüncü çeyreği değerlerine göre Android, dünya çapındaki akıllı telefon piyasasının %75’ini elinde bulundurmaktadır. [9]Bu, yaklaşık olarak 500 milyon kayıtlı Android cihazına denk gelmektedir,[10] Bununla birlikte işletim sisteminin başarısı, 4 teknoloji şirketleri arasındaki sözde "akıllı telefon savaşları" denilen sistemin bir parçası olarak patent davası için bir hedef haline gelmiştir. 2.2 Gelişim Palo Alto California’da Ekim 2003 yılında Andy Rubin(Danger’in kurucusu),[11] Rich Miner(Wildfire Communications Aş. kurucusu)[12], Nick Sears(T-Mobile da birinci başkan yardımcısı)[13] ve Chris White(WebTV designer’ı ve arayüz geliştiricisi)[1] tarafından geliştirilmeye başlandı. Rubin’in kelimeleriyle “sahibinin yerini ve tercihlerini bilen daha akıllı cihazlar geliştirilmeye başlandı”[1]. Şirket kurucuları ve çalışanları geçmişte büyük ve farklı işlere imza atmasına rağmen, Android Inc. Sadece mobil telefon yazılımları için gizlilikle çalışıyordu. Google Android Inc’i 17 Ağustos 2005’te Google’ın bir iştiraki olarak bünyesine katmayı başardı. Anlaşmadan sonra da Android Inc’in kilit adamları olan Rubin, Miner ve White işlerine devam ettiler.[1] Bu zamanlarda Android’le ilgili pek bir şey bilinmezken Google’ın mobil telefon piyasasına gireceği düşünülüyordu.[1] Rubin’in liderliğindeki ekip Linux kernel’ine sahip mobil cihaz geliştirdi. Bunun üzerine Google çeşitli donanım ve yazılım şirketleri ile anlaşmalar yaparak bunların sinyalini vermiş oldu. [14][15][16] Google’ın mobil iletişim pazarına girecek spekülasyonları Aralık 2006’da başladı.[17]BBC ve The Wall Street Journal Raporlar haberlerinde Google’ın bu konuda çalışmalarına hızla devam ettiği yer aldı. Bunların ardından Eylül 2007'de, InformationWeek Google'ın mobil telefon alanında birçok patent başvurusunda bulunduğunu açıkladı.[18][19] 5 Kasım 2007 tarihinde, Open Handset Alliance, Google, HTC ve Samsung gibi cihaz üreticileri, Sprint Nextel ve T-Mobile gibi kablosuz taşıyıcı üreticileri ve Qualcomm, Texas Instruments gibi yonga üreticileri dahil olmak üzere teknoloji şirketlerinden oluşan bir konsorsiyum, mobil cihazlar için açık standartlar geliştirmek için bir hedef ile kendisini tanıttı.[2]Android çalıştırmak için ilk ticari telefon O gün, Android ilk ürünü, Linux çekirdeği sürüm 2.6 üzerine inşa edilmiş bir mobil cihaz platformu olarak açılmış oldu. Bu cihaz HTC firmasının 22 Ekim 2008 tarihinde yayımlanan Dream modeliydi. [20] 5 Şekil 1-Android Versiyonları ve kullanımları 2008 yılından bu yana Android periyodik olarak ve sistemin eksikliklerini gidermek için güncellemeler yayınlamaktadır. Her ana sürüm bir tatlı veya şeker ismi sonrası alfabetik numarayla adlandırılmaktadır. Örneğin, sürüm 1.5 Cupcake’I 1.6 Donut izledi. Son sürüm 2010 yılında yayınlanan 4.2 Jelly Bean’dir ve bu sürümü Google, kendi cihazı olan Nexus serisi ile başlattı. Bunun sonrasında Google ile anlaşan HTC ve Samsung, LG gibi firmalar Nexus modelinin devamını geliştirmeye devam ettiler. Android sürümleri ve özellikleri aşağıdaki tabloda verilmiştir. Version Adı Yayın Tarihi kullanım (3 Aralık 2012) API seviyesi 13 Kasım 2012 17 0.8% 4.1.x Jelly Bean 9 Temmuz 2012 16 5.9% 4.0.x Ice Cream Sandwich 15 27.5% 4.2 Jelly Bean 16 Aralık 2011 6 Version Adı Yayın Tarihi kullanım (3 Aralık 2012) API seviyesi 3.2 Honeycomb 15 Temmuz 2011 13 1.2% 3.1 Honeycomb 10 Mayıs 2011 12 0.4% 2.3.3–2.3.7 Gingerbread 9 Şubat 2011 10 50.6% 2.3–2.3.2 Gingerbread 6 Aralık 2010 9 0.2% 2.2 Froyo 20 Mayıs 2010 8 10.3% 2.0–2.1 Eclair 26 Ekim 2009 7 2.7% 1.6 Donut 15 Eylül 2009 4 0.3% 1.5 Cupcake 30 Nisan 2009 3 0.1% Tablo 1: Android Versiyonları 7 2.3 Tanım Şekil 1 de Android ’in son sürümü Jelly Bean gösterilmektedir. Şekilde Home screen gözükmektedir. Telefon marka ve modeli ile birlikte değişmesi göz önüne alınarak; Android ilk başlatıldığında 10 ila 20 civarı uygulama yüklü olarak gelmektedir. Bunların başlıcaları; Google Play Market, Google search bar, Adobe flash player, Youtube’tur. Bazı diğer özellikleri aşağıda verilmiştir.[21] Şekil 2-Jelly Bean Samsung Galaxy Note 2 2.3.1 Handset layouts Platform VGA,2B ve 3B grafikleri desteklemektedir. 2.3.2 Depolama Depolama için SQLLite veritabanı kullanılmaktadır. 2.3.3 Bağlantı Android bu özelliklere destek verebilmektedir: GSM/EDGE, IDEN, CDMA, EVDO, UMTS, Bluetooth, Wi-Fi, LTE, NFC ve WiMAX. 2.3.4 Mesajlaşma SMS ve MMS ve kullanılan teknolojilerdir, ek olarak anlık mesajlaşma servisler threaded text messaging ve Android Cloud To Device Messaging (C2DM) işlemlerine destek verilmektedir. 2.3.5 Çoklu dil desteği Android çok sayıda dili desteklemektedir. [22] 2.3.6 Web tarayıcısı Android web tarayıcısı açık kaynak kodlu WebKit layout engine ve Chrome'unV8 JavaScript engine birleşimi üzerine kuruludur. Tarayıcı Android 4.0 versiyonunda Acid3 testinde 100 üzerinden 100 almıştır. 8 2.3.7 Java desteği Android uygulamaları işletim sisteminde gömülü olarak çalışan bir sanal makine üzerinde çalışırlar. Bu yöntem CPU ve RAM tasarrufu sağlamaktadır. Bu yüzden ayrıca sanal makine kurmaya gerek yoktur. Ayrıca 3. Parti uygulamaları ile J2ME de desteklenmektedir. 2.3.8 Medya desteği Android alttaki audio/video/media formatlarını desteklemektedir. WebM, H.263, H.264, AAC, HE-AAC (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-WB (in 3GP container), MP3, MIDI,Ogg Vorbis, FLAC, WAV, JPEG, PNG, GIF, BMP, WebP. [3] 2.3.9 Streaming medya desteği HTML,HTML5 <video> tag) Adobe Flash, Apple HTTP Live Streaming, RealPlayer Android, [6] desteği bulunmaktadır. 2.3.10 İlave donanım desteği Android video ve kamera desteğini otomatik olarak sunmaktadır. Ayrıca oyun kontrolleri için dokunmatik ekran(touchscreens) GPS, ivmeölçer(accelerometers), denge ölçer(gyroscopes), basınçölçer(barometers) ve magnometre(magnetometers) desteği sunabilmektedir. 2.3.11 Çoklu Dokunma(Multi-touch) Android ilk HTC Hero ile multi-touch özelliğini kullanıma sunmuştur. Bir süre sonra bu özelliği kaldırmıştır(Apple ile olan patent davalarından olduğu düşünülmektedir. [23]) Son olarak Google Nexus One ve Motorola Droid ile bu özelliğini tekrar kullanıma sunmuştur.[1] 2.3.12 Bluetooth Android A2DP, AVRCP dosya göndermede,(OPP) adres defterine erişimde, (PBAP) özelliğini ise telefonlar arası arama için sunmaktadır. Bunların yanı sıra klavye, fare ve yönetme kolu(HID) Android 3,1 ve sonrasında kullanılabilmektedir. Daha öncesinde bu bluetooth bağlantıları üçüncü parti uygulamalar ile yapılabilmekteydi[2] 2.3.13 Görüntülü arama(Video calling) Android, işletim siste olarak görüntülüarama desteği sunmamaktadır ancak üretici firmalar(ör: Samsung) ilave fonksiyonlarla bunu sağlamışlardır. Ayrıca Skype gibi üçüncü parti uygulamalar ile görüntülü arama internet bağlantısı aracılığı ile VoIP üzerinden yapılabilmektedir. 9 2.3.14 Çoklu Görev(Multitasking) Adresleme aynı bölgeye tahsis edilmedikçe çoklu görev uygulamaları çalıştırılmaktadır.[3] 2.3.15 Erişilebilirlik(Accessibility) Metni konuşma özelliği az veya hiç göremeyen insanlar için uygulanabilmektedir. İşitme engelliler içinde belirli ayrıcalıkları olduğu söylenebilir. 2.3.16 Ses tabanlı özellikler(Voice based features) Google arama motorunda sesli arama, Android ilk çıktığından veri bulunmaktadır.[4] Ses ile kişi bulunup arama yapılabilmekte, yön bulunabilmekte ve daha birçok özellik bulunmaktadır. Android 4.1 ile birlikte işletim sistemi konuşulanı anlayarak geri dönüş yapabilmektedir. Örnek olarak telefona “wake up” denildiğinde; “OK. What time?” sorusu gelmektedir. Bunun üstüne “Eight(08.00)” denildiğinde,”OK. Alarm is set” gibi veya benzer bir mesaj alınmaktadır. Son verilen özelliklerin telefonun özellikleri ile de bağlantısı bulunmaktadır. 2.3.17 Bağlantı noktası oluşturma(Tethering) Android 2.2 versiyonundan sonra telefonu Hotspot olarak kullandırabilmektedir. Yani telefonda bulunan internet, wireless yardımı ile diğer aygıtlara yayılabilmektedir. 2.3.18 Ekran yakalama(Screen capture) Android işletim sistemi, güç tuşuna ve ses azaltma tuşuna aynı anda basıldığında ekran yakalama özelliğini sunmaktadır.[7] Eski versiyonlarda bu özellik üçüncü parti uygulamalar ile sunulsa da üretici firma ve Google’ın yamaları ile 2.3 versiyonundan itibaren kullanılabilir durumdadır.[7] 2.3.19 Harici Bellek(External storage) Çoğu Android cihaz microSD girişine sahiptir. Böylelikle hem okuyup hem verilerini kaydedebilmektedir. MicroSD kart biçimlendirmeleri FAT32, Ext3 veya Ext4 olabilmektedir. Ayrıca çok sayıda Anroid tablet USB girişine sahiptir. Ancak USB belleğinde depolama biçimi FAT32 olmalıdır. Buna ek olarak üçüncü parti uygulamalarla NTFS, HFS PLUS ve exFAT de desteklenmedir 10 2.4 Ara yüz(Interface) Android ara yüzü direkt el temasları üzerine kurulmuştur.[24] Bu; dünyada kullandığımız el hareketlerine benzer el hareketlerini kullanabileceğimiz anlamına gelmektedir. Örnek olarak tutup sürükleme, kısma, daraltma veya tam tersi büyültme.[24] Akıcı dokunmaya yani, tutup çekmeye izin verilmektedir. Bunun yanında yapılan işlem sonrası titreşim ile geri dönüş verilebilmektedir. Bağlantılı olarak üçüncü parti uygulamalar bu geri dönüşleri kullanarak kullanıcısı ile iletişimi koparmamaktadır.[25] Android ana ekranı (Homescreen) masaüstü ile büyük ölçüde benzerlik Şekil 3-Play Store göstermektedir. Kullanıcıya yön vererek önemli noktaları bildirmektedir. Ana ekranı uygulama ekranı ve widgetlerden (tuş, buton vs.) oluşmaktadır. Uygulama ikonları aynı masaüstünde olduğu gibi bağlantılı programları açmaktadır. Örnek olarak mail kutusu, hava durumu programı, Youtube verilebilir.[26]Ana ekranı çok sayıda sayfadan oluşabilmektedir. Android buna destek verir. Ancak bunun nasıl tasarlanacağı konusunda üretici firmaları serbest bırakmaktadır. HTC firması sayfaları alt alta sıralarken Samsung firması yan yana sıralamıştır. Ayrıca her kullanıcı sayfalarını ve uygulama sıralamalarında serbest bırakılmıştır. Ana ekranı tasarlamak için ise üçüncü parti uygumalar mevcuttur Kullanıcı isterse Google Play Store’dan indirerek veya herhangi bir siteden yükleyerek görünümü değiştirebilmektedir. Bu anlayış Windows işletim sistemine indirerek görünümü değiştirdiğimiz temalarla aynıdır. Ekranın üst kısmında bulunan durum çubuğu (status bar) cihazla ilgili bağlantı bilgilerini, telefon durumunu kullanıcıya sunmaktadır. Bu çubuk istenirse aşağıya doğru çekilerek daha geniş çaplı bilgilere ulaşılabilir. Güncelleme, mesaj, E-posta, pil durumu, hata durumu bilgileri ve daha birçoğu bu çubukta izlenebilir.[27] Kurulan üçüncü parti uygulamalar da durum çubuğunu kullanabilir ve istenilen durumda kullanıcıya uyarı verebilir. Ayrıca durum çubuğunda cevapsız çağrılar listelenir. Arama yapılmak istendiğinde arama geçmişine girilmeden durum çubuğu kullanılarak geri dönüş yapılabilir.[28] Çubukta bulunan uyarılar kullanıcı görüntülemediği veya temizlemediği müddetçe orada durmaktadır. 11 2.5 Uygulamalar(Applications) Kullanıcıların kolay erişimi ve cihazların giderek yaygınlaşması ile Android platformunda uygulama geliştirme yükselen bir tercihtir. Uygulamaların Google Play Store veya Amazon Appstore Kolayca indirilebilmesi bunu daha çekici yapmaktadır. Üstte yazılı uygulama merkezlerinden uygulamaların. APK uzantılı dosyası indirilerek kurulum hiçbir zorluk olmadan kurulabilmektedir.[29] Google Play Store, indirilen uygulamaların yeni sürümü çıktığında güncelleme bildirimi ile kullanıcıyı bu uygulamaları güncellemeye yöneltmektedir. Ayrıca Google Play Store üzerinden kategorilere sıralamalara, ücretli, ücretsiz, ülke sıralaması ve daha birçok özelliğe göre indirilen uygulamaları gezme imkânı vardır. Yine bu Store üzerinden yapılan indirme öncesi telefonun özelliklerine bakarak uygulamayı çalıştırıp çalıştıramayacağı konusunda kullanıcıyı uyarmaktadır.[30] Ücretli uygulamalar indirilip cihaza kurulduktan sonra uygulamaları denemek için 15 dk. süre Google tarafından kullanıcıya sunulmaktadır. Beğenilmeyen veya istenmeyen uygulama 15 dk. İçinde silinerek ücret iadesi sağlanır.[31] Uygulamaların maliyetleri Google firmasının oluşturduğu fatura ile aylık olarak kullanıcıya bildirilir. 2012 Eylül ayında Google Play Store da 675.000 uygulamanın bulunduğu ve bu uygulamaların 25 trilyon defa indirildiği Google firması tarafından bildirilmiştir[32] Google Play Store’a uygulama yüklemek için Google id si ile bir Google uygulama geliştirici hesabı oluşturmak gerekir. Uygulama geliştirici hesabı oluşturmak için Google hizmet şartlarını kabul etmek ve belirlenen ücreti ödemek gerekir.(29 Aralık 2012 itibari ile yıllık 25$)[33] 12 Şekil 4-Google Play Store kayıt işlemleri Açılan hesap ile ücretli veya ücretsiz uygulama yüklenebilmektedir. Yüklenen uygulamalar Google boot’ları tarafından virüs taramalarından geçirilir ve eğer bir ihmal, haksızlık saptanmazsa yüklenerek yaklaşık olarak 24 saat içinde kullanıcılara sunulur. Uygulamaları yüklerken 3 adet uygulama fotoğrafı yükleme uygulama geliştiricinin hakkıdır. Eğer daha fazla fotoğraf yüklenmek istenirse ek ücret ödemek gerekmektedir. Uygulama yüklerken gerekli olan veya yüklenebilen kategoriler aşağıda verilmiştir. Varlıkları yükle o Ekran görüntüleri o Yüksek Çözünürlüklü Uygulama Simgesi o Tanıtım Amaçlı Grafik o Özellik Grafiği o Tanıtım Videosu o Gizlilik Politikası o Uygulamam Tanıtılmasın seçeneği Giriş ayrıntıları o Dil o İsim 13 o Açıklama o Son Değişiklikler o Tanıtım Metni o Uygulama Türü o Kategori Yayınlama Seçenekleri o Kopyalamaya Karşı Koruma o İçerik Sınıflandırma o Fiyatlandırma o Desteklenen Cihazlar Google Play Store Türkiye piyasası ele alınarak incelendiğinde belirli farklılıklar göstermektedir. 29.12.2012 ve öncesinde Google’ın altyapı yetersizliği gerekçesiyle Türkiye’deki uygulama geliştiricileri Herhangi bir Türkiye bankası hesap numarası göstererek ücretli uygulama yayınlayamamaktadırlar. Şu ana kadar bulunan geçici çözümler arasında Google’ın ücretli uygulama desteği verdiği ülkelerden (İngiltere, Almanya gibi) bir hesap açarak geliştirilen uygulamanın gelirinin bu hesaba aktarılması ön plana çıkmaktadır. Ancak bu da gerek transfer ücreti ve güvenlik açısından çok tavsiye edilmemektedir. Google’dan yapılan bilgiler ışığından ücretli uygulama yayınının Türkiye’de de yapılabileceği açıklanmaktadır.[34] Uygulamalar Java nesne yönelimli programlama dilinde ve Android yazılım geliştirme kiti(Android software development kit)(SDK) kullanılarak geliştirilir. SDK bir hata ayıklayıcı, yazılım kütüphaneleri, QEMU, belgeleri, örnek kodları telefon emülatörü ve yeni öğrenenler örnek kodları da içinde olan kapsamlı bir dizi içerir.[35] Genel olarak desteklenen uygulama geliştirme ortamı Eclipse’tir. Eclipse açık kaynak kodlu Java C, C++ ve daha birçok dili destekleyen bir platformdur. İçinde mobil cihazlar için geliştirmeye yardımcı kit ler ve framework’ler (çerçeve) bulunur. 2.6 Geliştirme(Development) Android Google için özel olarak geliştirilmesine rağmen açık kaynak kodlu bir işletim sistemidir. Android Linux işletim sistemi üzerine geliştirilmiştir. Google yaptığı geliştirmeleri zaman içinde halka açık kaynak kodu ile duyurur.[36] Bu kaynak kod genel olarak Nexus serisinde değişiklik olmadan kullanılır. .[37] Bunun harici Android kullanan üretici firmalar koda müdahale edebilir ve farklı görünümde aynı mantıkla çalışan sistemler sunabilirler.[38] 14 2.7 Hafıza yönetimi Android işletim sistemi bir bataryaya bağlı çalışacağı varsayıldığından masaüstü cihazların aksine, RAM’I en düşük seviyede kullanmaya odaklı geliştirilmiştir. İşletim sistemi, telefon kullanılmadığında kullanıcının isteğine bağlı olarak belirli bir sure sonrasında ekranı karartır ve batarya tasarrufu moduna geçer. Bunun yanında, uzun sure kullanılmayan uygulamalar işletim sistemi tarafından otomatik olarak hafızadan düşürülür. Uzun sure kullanılmayan uygulamalar arka planda tutulur, gerektiğinde tekrar çağırılarak kaldığı yerden çalışmalarına devam edebilirler. Genel olarak işletim sistemi gereksiz hafıza kullanımına göz yummaz ve gereksiz uygulamaları arka planda en aza indirgeyerek çalışmalarını sürdürtür. Bu uzun süreli batarya kullanımı için çok önemlidir. [39] Android hafızadaki uygulamaları otomatik olarak yönetir, eğer batarya belirli bir seviyenin altına geçtiyse batarya ömrünü uzatmak için uygulamaların çalışmalarına izin vermez yada bu uygulamalar çalışıyorsa bu uygulamaları durdurarak bataryayı en uzun sure kullanma için adaptasyon sağlar. Buna örnek olarak, bataryası düşük seviyeye geçen(%15 ve altı) cihazlarda, Android kameranın kullanımını otomatik olarak durduracaktır. Eğer kamera o an kullanılıyorsa kamerayı durdurur ve uygulamadan çıkar. Bunun yanında pil ömrünü uzatmak için Google Play Store’da Amazon Store’da çeşitli üçüncü parti uygulamaları bulunmaktadır.[40] Bu uygulamalar, gereksiz yere hafıza kaplayan uygulamaları kullanıcının isteğiyle sonlandırarak hem performans artışı sağlarlar hem de batarya ömrünü uzatırlar. 2.8 Güvenlik ve Politikalar Android uygulamaları bir sanal kutuda (sandbox) çalıştırılır ve bu sanal alanda çalışan uygulamaların sistem kaynaklarına erişim yetkisi yoktur. Sadece bu bile büyük oranda güvenlik sağlamaktadır. Bu erişim hakkı sadece kullanıcı onayladığında değişebilir. Kullanıcı uygulamaları yüklerken uygulamanın erişebileceği alanlar işletim sistemi tarafından listelenir. Eğer kullanıcı bunlara izin verirse yüklenen uygulama sadece izin verilen sistem dosyalarına erişebilir. Örnek vermek gerekirse bir oyun yüklenirken yüksek ihtimalle titreşimi ve sd karta erişimi kullanmak isteyecektir. Eğer biz bunlara izin verirsek uygulama yüklenir. Yine aynı örnek üzerinden devam edersek, oyun uygulamasının telefonu dinlemesine gerek yoktur. Böyle bir istek görüldüğünde uygulamayı yüklemeden çıkılabilir ve bu Şekil 5-Google Play Store işlem cihaza hiçbir erişim gerçekleştiremeden sonlanır.[41] Uygulama indirme Bu konuyla ilgili çok sayıda üçüncü parti uygulama cihazın güvenliğini sağlamaktadır.[42] 15 SandBox ve diğer kısıtlama işlemlerine rağmen bazı geliştiriciler sisteme sızmak isteyebilirler. Bun göz önüne alınarak önde gelen güvenlik firmalarından Lookout Mobile Security, AVG Technologies ve McAfee gibi firmalar çeşitli antivirus programlarını Android platform için geliştirmişlerdir. Bunun yanında Google açık kaynaklı program müdürü Chris DiBona’nin yaptığı açıklamaya göre ise Android veya diğer mobil işletim sistemlerinin bu tür yazılımlara ihtiyacı olmadığı yönündedir .[43] 2.9 Lisans Android kaynak kodu ücretsiz ve açık kaynak kodlu yazılım(free and open source software) lisansı altında korunmaktadır. Google kodun büyük bölümünü Apache 2 lisansında(Apache License versiyon 2.0) yayınlar. Linux üstündeki değişimler ise GNU General Public License 2 altında yayınlanır. Open Handset Alliance adı altında çalışan ve içinde Vodafone, T-Mobile gibi firmaların geliştiricilerinin bulunduğu topluluk Linux’ın çekirdeğindeki değişimleri yapar ve bu değişimleri Android’e uygularlar. Bu kodlar her daim açık ve erişilebilirdir. 3 3.1 MOBİL UYGULAMA GELİŞTİRME ORTAMLARI Giriş Açık kaynak kodlu oluşu başta olmak üzere, çok sayıda üstün yanı ile beraber Android işletim sistemi sayısı her geçen gün artmaktadır. Telefon üretici firmaların büyük çoğunluğu, ürettiği telefonlar için Android işletim sistemini kullanmakta. Android üzerinde ufak değişiklikler yaparak telefonlarını satışa sunmaktadırlar. Her geçen gün yükselişini sürdüren Android akıllı telefon piyasasının yükselişi, Android telefonlar için geliştirilen uygulamaların, daha büyük kitlelere hitap etmesi demektir. Sadece bu avantajdan bile yola çıkılsa, Android geliştiricilerinin neden hızla arttığı anlaşılmaktadır. Bir diğer yönelim nedeni ise: “Gelecekte akıllı telefon, tablet veya herhangi bir dokunmatik cihaz kullanımı, bilgisayarların kullanımının yerini alacaktır.” söylentisidir. Akıllı telefonlar için uygulama geliştirmeden önce, Pazar paylarını bilmek çok önemlidir. Bu konu ile ilgili Gartner firmasının yaptığı araştırmaya göre 2007-2012 arası akıllı telefon pazarı-işletim sistemleri dağılımı aşağıda verilmiştir. 16 Şekil 6-Gartner Şirketinin araştırmalarına göre Mobil Cihaz Kullanım oranları (2007-2012) Grafikte de görüldüğü üzere, uzun yıllar hâkimiyetini sürdüren Symbian işletim sistemi, tahtını yavaş yavaş bırakmaktadır. Özellikle 2010 sonuncu çeyreğinden sonra Android işletim sistemi kullanımı giderek artmıştır. Bunun yanında RIM OS ve IOS kullanımı da normal seviyelerde devam etmiştir. Özellikle iOS işletim sistemi, sadece Apple’ın akıllı cihazlarında kullanılıyor olmasından ötürü, oranı az gözükse de, tek şirket satışları için önemli bir Pazar payına hitap etmektedir. 29 Ekim 2012 de, sunulan Windows Phone 8 ile Microsoft firması da mobil platforma olan ilgisini göstermiştir. Windows Phone 8 ile satışı artsa da Microsoft şirketi rakiplerine karşı biraz geride kalmıştır. Yukarıda yer alan işletim sistemleri ve bazı özellikleri aşağıda incelenmiştir: 3.1.1 Symbian Ortak bir işletim sistemi kurmak üzere yola çıkmış olan bir şirkettir. Symbian şirketinin bugünkü hissedarları Ericsson (%15.6), Nokia (%47.9), Panasonic (%10.5), Samsung (%4.5), Siemens (%8.4) ve Sony Ericsson(%13.1)dur.[44]Her ne kadar yıllardır piyasa hakimiyetini elinde tutsa da diğer işletim sistemlerinin hayata geçirilişi ve başarıları Symbian’ı derinden vurmuştur. Symbian uygulama geliştiricileri için birden çok seçenek mevcuttur. Bunlar: C++, Java ve Visual Basic’tir. İstenilen dili kullanarak Eclipse IDE’de uygulama geliştirilebilmektedir. 17 3.1.2 iOS (eski adıyla iPhone OS) Apple'ın orijinal olarak iPhone için geliştirdiği ancak daha sonra iPod Touch ve iPad'de de kullanılan mobil işletim sistemidir. Mac OS X'den türetilmiştir. 2007 ikinci çeyreğinde kullanımı hız kazanan işletim sistemi, yıllar boyunca hâkimiyetini sürdürecek gibi durmaktadır. iOS işletim sistemine uygulama geliştiricileri, Objective C dilini kullanmaktadır. Xcode IDE’sinde uygulama geliştirme yapılır. XCode IDE sadece Mac OS X işletim sisteminde çalışmaktadır. 3.1.3 Research In Motion Limited (RIM) (TSX: RIM, NASDAQ: RIMM) Kanada merkezli bir telekomünikasyon ve wireless ekipmanları şirketidir. Şirket daha çok BlackBerry akıllı telefon ve tabletleriyle tanınmaktadır. Telefonları ilk üretme nedenleri olan şirket kullanımı yanı sıra, dünyaya açılarak büyük kitlelere hitap etmiştir. BlackBerry OS, bu firmanın en bilinen işletim sistemidir. Uygulama geliştiricileri, bu işletim sistemine uygulama geliştirmek için Java nesne yönelimli dilini kullanmaktadır. Kod yazımı için ise Eclipse uygulaması tavsiye edilmektedir. 3.1.4 Bada Akıllı telefon ve tablet bilgisayarlar için geliştirilmiş bir mobil işletim sistemidir. Bada kelimesi Kore dilinde "okyanus" anlamına gelmektedir. Bada işletim sistemi uygulamaları C++ dili ile geliştirilmektedir. Eclipse IDE’si üzerinde uygulama geliştirilebilmektedir. 3.1.5 Windows Mobile ve Windows Phone Microsoft şirketi tarafından PDA ve akıllı telefonlar gibi mobil cihazlar için tasarlanmış olan bir işletim sistemidir. Windows CEçekirdeği üzerine temellendirilmiştir. Windows Mobile veya Windows Phone için uygulama geliştirmek için C# ve Visual Basic gibi Microsoft dilleri kullanılabilmektedir. Uygulama geliştirme IDE’si olarak Visual Studio ön plana çıkmıştır. 3.1.6 Android Google, Open Handset Alliance ve özgür yazılım topluluğu tarafından geliştirilen, Linux tabanlı, mobil cihaz ve cep telefonları) için geliştirilmekte olan, açık kaynak kodlu bir mobil işletim sistemidir. Android işletim sistemi için uygulama geliştirme Java dili ile yapılmaktadır. Android için genel önerilen geliştirme platformu, Eclipse’tir. Android ile uygulama geliştirmek için; Java Development Kit(JDK) Android SDK 18 Eclipse IDE Kurulumları gerekmektedir. Bu gerekliliklerin tanımları aşağıda verilmiştir. 3.2 Java Development Kit(JDK) Java Development Kit (JDK) Java SE(Standart Edition), Java EE(Enterprise Edition ) ve Java ME(Micro Edition) platformlarında uygulama geliştiricilerini hedef alan [45] Solaris, Linux, Mac OS X ve Windows işletim sistemleri üzerinde çalışabilen bir yazılım geliştirme kitidir. (alet çantası)[45] Java platformunun tanıtımından bu yana, en yaygın kullanılan kit unvanını elinde bulundurmaktadır.17 Kasım 2006 tarihinde, Sun şirketinin genel kamu lisansı (GPL)altında yayınlanmıştır. 3.3 Android Software Development Kit (SDK) Android SDK API kütüphaneleri ve geliştirici araçları oluşturmak için gerekli test ve Android için hata ayıklama uygulamaları sağlar. Android SDK içindeki eklentiler aşağıda verilmiştir. 3.4 Eclipse ADT eklentisi Android SDK Araçları Android Platform araçları En son Android platformu Eclipse IDE(Integrated Development Environment) Eclipse, açık kaynak kodlu bir tümleşik geliştirme ortamıdır (IDE). Ana odak noktası Java ve Java ile ilişkili teknolojiler olsa da esnek yapısı sayesinde C, C++, PHP ve Phyton gibi farklı diller için de kullanılmaktadır. 2001 yılında başlatılan eclipse projesi, Java'nın ana grafik sistemi olan Swing yerine bulunduğu platformda bulunan özellikleri doğrudan kullanan SWT'yi kullanarak Java dünyasında tartışmalara yol açmıştır. Hızlı arayüzü, şık görünümü ve çok kuvvetli özellikleriyle kısa zamanda Java geliştiricileri arasında en popüler geliştirme ortamı olmuştur. 2005 yılında Eclipse projesinin yönetimi Eclipse Vakfı’na bırakılmıştır. Android SDK ile bütünleşmiş çalışan Eclipse' in içinde yazılan programları denemek için Emülator(Sanal telefon) kurulabilmektedir. Ayrıca sunulan eklentiler ile işlevleri geliştirilerek birçok alanda kullanılabilmektedir. 19 3.5 Android Uygulama Geliştirme Ortamı Kurulumu Android ile uygulama geliştirmek için gereklilikler 2. Mobil uygulama geliştirme ortamları başlığı altında verilmiştir. Bu gerekliliklerden yola çıkarak, ihtiyaçların nasıl indirileceği ve kurulacağı, Windows işletim sistemi için anlatılacaktır. 3.5.1 Java Development Kit Yüklemesi Java Development Kit(JDK yüklemek için) http://www.oracle.com/technetwork/java/javase/downloads/index.html adresinden, download seçeneği altında Java Platform(JDK) 7u10 seçeneğine tıklanır. Şekil 7-Java SE Download Açılan pencerede 3 kategori dikkat çeker. “Java SE Development Kit 7u10”, “Java SE Development Kit 7u10 demos and samples download” ve “Java FX demos and samples download”.“Java SE Development Kit 7u10”, android uygulama için gerekli olan geliştirme kitidir. “Java SE Development Kit 7u10 demos and samples download” seçeneği geliştirilmiş olan örnek Java SE uygulamalarını bilgisayara indirmeye yarar. “Java FX demos and samples download” seçeneği ise geliştirilmiş olan örnek Java FX uygulamalarını bilgisayara indirir. “Java SE Development Kit 7u10” başlığı altından işletim sistemiyle uyumlu olan seçenek seçilerek indirme işlemi başlatılır. 20 Şekil 8-Java Se Download İşletim Sistemi seçimi 3.5.2 Android SDK(Software Development Kit) Yüklemesi Android SDK yüklemesi için http://developer.android.com/sdk/index.html adresine gidilir. Açılan bu sayfa, işletim sistemini tanımaktadır. Sağ kısımda bulunan “Download the SDK ADT Bundle for Windows” seçeneği tıklanabilir yada alt kısımda bulunan “Download for other platforms” tıklanabilir. Şekil 9-Android SDK Download platformları Şekil 10-Android SDK Download for other 21 Herhangi bir seçenek yapılarak devam edildiğinde gelen pencerede lisans sözleşmesi kabul edilerek Android SDK indirilir. 3.5.3 Eclipse IDE(Integrated Development Kit) yüklemesi Eclipse IDE’yi indirmek için http://www.eclipse.org/downloads/ adresine gidilir. Açılan sayfada amaca uygun bir tanesi seçilir. Eclipse Classic sürümü, Android uygulama geliştirmek için en uygun olanıdır. Bu sürümünün indirilmesi tavsiye edilir. Şekil 10-Eclipse Yüklemesi Açılan sayfada [United Kingdom] UK Mirror Service (http) seçeneği tıklanarak eclipse paketi bilgisayara indirilir. Eclipse IDE’nin bir setup dosyası bulunmamaktadır. İndirilen pakette Eclipse.exe dosyasına tıklandığında çalıştığı görülmektedir. İndirilecek dosyaların tamamı indirildikten sonra “Java SE Development Kit 7u10” programı kurulumu ile başlanır. Setup dosyası çalıştırılır ve gelen durumlarda “Next”e tıklanarak yükleme tamamlanır. “Java SE Development Kit 7u10” kurulumu tamamlandıktan sonra Android SDK dosyasının Eclipse IDE’ye dâhil edilmesi gerekir. Bunun için Eclipse programı Eclipse.exe dosyasına tıklanarak başlatılır. Açılan program bir çalışma alanı isteğinde bulunacaktır. Eclipse otomatik olarak workspace klasörünü göstermektedir. Bunun anlamı ise çalışılacak programların bu klasör altında tutulmasıdır. İsteğe göre workspace kabul edilir veya istenilen başka bir klasör seçilir. Eclipse ana ekranı belirir. 22 Gelen pencerede HelpInstall New Software seçilerek yeni çalışma alanı olacak Android Eclipse tanıtılacaktır. Şekil 11-Eclipse-Install new software Açılan pencerede Add-1 butonuna tıklanır. Daha sonra açılan pencerede yazılıma bir isim vermek gerekir, istenilen isim verilir ve adres kutusuna https://dl-ssl.google.com/android/eclipse/ bağlantısını girilip “OK” butonuna basılır. 23 Şekil 12-Android yükleme işlemleri Bu işlemi gerçekleştirdikten sonra Work with-2 kısmında girdiğiniz değerler gözükecektir. Girmiş olduğunuz adresten yazılım paketleri-3 getirilecektir. Paketlerin hepsi seçilir, çünkü bu paketler uygulama geliştirmek için gerekecektir ve Next-4 butonuna tıklanır. Açılan pencerede paketlerin yükleme durumu görülebilir. Yükleme tamamlandıktan sonra diğer adıma geçiniz. Ama eğer Android SDK'yı kurmamış iseniz diğer adıma geçmeden önce kurmalısınız. Eclipse üzerinde WindowPreferences seçeneğine tıklanarak açılan pencerede sol menüden Android sekmesi seçilir. Kurulu olan Android SDK'nın bilgisayar üzerindeki yerini gösterip ve OK butonuna tıklayarak pencereyi kapatılır. Şekil 13-Window--> Preferences Tüm bunları tamamladıktan sonra Window Android SDK and AVD Manager seçeneğine tıklanır. Açıldığında birkaç defa pop-up pencerelerde bazı işlemler gerçekleşecektir. Biraz beklemek gerekecektir. İşlemler gerçekleştikten sonra Android ile ilgili paket yükleme işlemlerini gerçekleştirilebilir. Buradan istenilen alanlar seçilebilir ya da hepsi seçilerek yüklenebilir. Yükleme süresi seçilen dosya boyutuyla doğru orantılı artıp azalacaktır. Hepsinin seçilip yüklemesi önerilir ancak bu biraz zaman alacaktır. Şekil 14-Android AVD yüklemesi 24 3.5.4 Sanal cihaz oluşturmak Geliştirme ortamı oluşturmak için gerekli olan tüm ihtiyaçların yüklemesi bittikten sonra, geliştirilen programların testi için sanal cihaz oluşturmak geliştiricinin yararına olacaktır. Sanal cihazlar, geliştirilen programların farklı boyutlarda ve farklı Android sürümlerinde nasıl çalıştığıyla ilgili %100’e yakın bilgiyi geliştiriciye vermektedir. Geliştirilen uygulama gerçek cihaz üzerinde de çalıştırılabilmektedir. Geliştirilen uygulamayı gerçek cihaz üzerinde çalıştırmanın hata payı olmasa da her türlü Android sürümüne sahip ve her genişlikte cihaza sahip olunamayacağı için sanal cihaz gerekmektedir. Gerçek cihaz üzerinde programın testi için yapılması gerekenler basittir. Bunun için, cihazın USB kablosu ile bilgisayara bağlanması ve Android üzerinde AyarlarUygulamalarGelişim ve buradaki “USB hata ayıklama” ve ”Sahte konumlara izin ver” seçenekleri aktif edilmelidir. Android işletim sistemi üzerinde farklılık gösterse de “USB hata ayıklama” ve ”Sahte konumlara izin ver” seçeneklerine ulaşmak genel yapısı itibari ile böyledir. Sanal cihaz oluşturmak için Menüden, Window”Android SDK and AVD” seçeneği seçilir. Şekil 15-Android sanal cihaz oluşturma 1 Açılan pencereden yüklü paketleri ve şu an ulaşılabilecek paketleri görebilirsiniz. Virtual Devices seçeneğine tıklanarak sanal cihaz kısmına geçilir. “New” butonu ile oluşturulacak olan Android cihazın özellikleri seçilecektir. Name: Android sanal cihazına vermek istediğiniz herhangi bir isim olabilir. İsmin sadece başka bir sanal cihaz ile aynı isim olmaması önemlidir. Target: Android versiyonunun seçileceği alandır. İstenilen cihaz seçilir. Burada dikkat edilmesi gereken ise, bu kısımda sadece bilgisayarımızda yüklü olan Android sürümlerinin gözüktüğüdür. Cihaz içinde SD kart ile ilgili işlemler yapılacaksa SD kart kısmında SD kartın boyutu girilebilir. 25 Snapshot: Sanal cihazdan ekran görüntüsü alınıp alınamayacağına izin verildiği kısımdır. “Enable” seçilirse ekran görüntüsü alınabilir. Skin: “Built-In” ve “Resolution” seçenekleri bulunmaktadır. Eğer Built-in seçilirse, hazır olan bir çözünürlük değeri seçilecektir(Kullanımda olan). Resolution seçeneği ise ekran boyutlarının elle atanmasını sağlamaktadır. Hardware: Cihazın donanımsal özelliklerinin belirlendiği kısımdır. New denerek yeni özellikler atanabilir veya delete ile önceden verilen özellikler silinebilir. İsteğe bağlı özellikler seçildikten sonra “Create AVD” butonu ile sanal cihaz oluşturulur. Oluşturulan sanal cihazın aşamaları “Console” penceresinde gözükmektedir. Şekil 16-Sanal cihaz oluşturma 2 4 4.1 GPS (GLOBAL POSITIONING SYSTEM) Giriş Geliştirilen uygulama, cihaz üzerinden GPS bilgilerini alarak bu bilgileri Web ortamına kaydetmektedir. Konum bilgisinin tespiti ve bu bilgilerin kullanımı GPS sistemini tanımaya dayanmaktadır. Bu bölümde GPS ile genel bilgiler verilecektir. 4.2 GPS GPS (Global Positioning System; Küresel Yer Belirleme Sistemi ya da Küresel Konumlandırma Sistemi), uydularla arasındaki mesafeyi ölçerek dünya üzerinde 26 bulunan konumu herhangi bir zaman, yer ve hava şartında belirlemek için tasarlanan ve sürekli olarak kodlanmış veri yollayan bir uydu ağıdır [46]. Başlangıç amacı askeri olmasına rağmen zaman içinde kamu kullanımına açılmış bir sistemdir. GPS’in gelişimi ve başlangıcı Amerika Birleşik Devletleri’ne dayanmaktadır. Yeryüzündeki istasyonlar tarafından kontrol edilen ve herhangi bir GPS alıcısı tarafından algılanabilen radyo sinyalleri yayan uydulardır. GPS uyduları, yeryüzünden yaklaşık 20.000 km uzaklıkta konumlanmıştır. Bu uyduların hepsi ABD Savunma bakanlığına aittir. İlk GPS uydusu 1978 yılında fırlatılmıştır. GPS Uyduları 4 bölüme ayrılarak adlandırılmıştır. Gelişmeye yönelik fırlatılan ilk 10 uydu “Block I” adını alır. 1989 - 1997 yılları arasında fırlatılan 28 uydu “Block II” adını alır. Bu serinin geliştirilmiş son 19 uydusu ise “Block IIA” olarak adlandırılmaktadır. Birincil sistemi tamamlayan 24. GPS uydusu ise 1994 yılında fırlatılmıştır. Gelişimine devam eden, diğer uyduların yerini alacak ve “Block IIR” adını alan 3. nesil ilk GPS uydusu ise 1997 yılında fırlatılmıştır. Yeni nesil GPS uyduların fırlatılmasına ise 2005 yılında devam edilmiştir Gelecek yıllar içinde GPS uydu sayısının artacağı söylenmektedir.[47] GPS Çalışma sistemini temsili anlatan resim Şekil 16’da verilmiştir. Şekil 17-Temsili GPS GPS, en az 24 uydudan oluşan Uzay Bölümü, kullanıcıların elinde veya aracında bulundurduğu GPS alıcılarının oluşturduğu Kullanıcı Bölümü ve yeryüzündeki 5 ayrı istasyonun oluşturduğu Kontrol Bölümü’nden oluşur [46]. Aşağıda bölümler ayrıntıları ile incelenmiştir. 27 Uzay Bölümü: GPS’in merkezini oluşturur. Dünya yüzeyinden yaklaşık 20.000 km yüksekte ve yörüngede hareket eden ve en az 24 uydudan (21 asil ve 3 yedek) oluşur. Bu uydular 6 ayrı gruba ayrılır ve 4 uydudan oluşan her bir bu grup herhangi bir zamanda dünyanın herhangi bir noktasını görebilecek şekilde yörüngelere oturtulmuştur [48]. GPS uydular saatte 7.000 mil hızla hareket ederek dünya çevresinde 24 saatte 2 tur atarlar. Bu uydular güneş enerjisinden faydalanarak çalışır ve yedek bataryaları sayesinde, güneş ışığının yetersiz olduğu durumlarda veya güneş tutulması gibi olaylardan etkilenmeden çalışmalarını sürdürürler. Aynı zamanda bu uyduların yörüngelerinde kalabilmesi için küçük roket iticileri de bulunmaktadır [49]. GPS Uyduları düşük frekansta güçlü ve iki farklı (L1, L2) radyo sinyali yayarlar. L1 frekansını ( UHF bandında 1575, 42 Mhz ) sivil GPS alıcıları kullanırken, L2 (1227,60 Mhz)frekansı ise ABD Savunma Bakanlığı tarafından kullanılmaktadır. Bu sinyaller plastik, cam veya buluttan geçebilir ancak duvar ve dağ gibi katı cisimlerden geçemezler [50]. Bazı durumlarda GPS sinyallerinin alıcısına ulaşmasında bazı problemler oluşmakta ve kullanıcı, konumu hatalı bir şekilde hesaplanmaktadır. İki GPS uydusunun Şekil17 deki gibi konumlanması, alıcının mavi şeridin herhangi bir kısmında olması anlamına gelmekte ve bu da hassas bir konum tahminini zorlaştırmaktadır. Şekil 18-Kötü konumlanma 28 Eğer iki uydu birbirine 90 dereceye yakın bir açıyla bulunuyorsa bu iki uydu şanslı konumdadır. Doğru sonuç elde oranı yükselmektedir. Bu konumlama Şekil 18’de gösterilmektedir. Şekil 19-İyi konumlanma Şekil 17 ve şekil 18’de ki bozulmalar haricinde, eğer GPS alıcısı şehir içinde yüksek binalara yakında bulunuyorsa GPS sinyalleri binaya çarparak alıcının yanlış konum hesaplamasına neden olur. (Şekil 19) Diğer yanlış konum hesaplama nedeni ise yer altında veya yüksek bir dağın yakınında bulunmadır. Bu durumlarda da yine, GPS uyduları alıcıya ulaşamamakta ya da yanlış konum bildirebilmektedir. Öte yandan, uzaydan gelen GPS sinyalleri atmosfere girerken kırılabilmekte ve yanlış konum bilgisine neden olmaktadır. Troposferdeki gecikme frekansa bağlı olmayıp, farklı frekans kullanımı ile giderilemez. Troposferik etki iki ayrı bölümde (ıslak ve kuru) incelenerek modellendirilmeye çalışılır. Yeryüzünde ölçülen ısı ve basınç ile uydunun yüksekliğine bağlı olarak geliştirilen modeller ile ilgili araştırmalar devam etmektedir.[51] (Şekil 20) 29 Şekil 20-Binalardan bozulan sinyal Şekil 21-Atmosferden kırılan sinyal GPS uydusunun yaydığı sinyallerin alıcıya gelene kadar yolda meydana gelen bozulmalar ve bu bozulmaların konum hesabındaki hata payları aşağıdaki tabloda yaklaşık değerleri ile verilmiştir. İyonosfer etkisi ± 5 metre Uyduların yörünge hataları ± 2.5 metre Uyduların atom saatlerindeki hatalar ± 2 metre Çoklu yol hatası ± 1 metre Troposfer etkisi ± 0.5 metre Hesaplamalardaki yuvarlamalar ± 1 metre Tablo 2: Gps Değerleri Kontrol Bölümü: GPS uydularını sürekli izleyerek, doğru yörünge ve zaman bilgilerini sağlar. Dünya üzerinde 5 adet kontrol istasyonu bulunmaktadır. Bunlar Hawaii, Kwajalein, Colorado Spring (Ana merkez), Ascension adaları ve Diego Garcia. Bu istasyonların çoğu insansız gözleme istasyonlarıdır ve birincil amaçları topladıkları verileri ana merkeze aktarmaktır [52]. 2005 yılının Ağustos ve Eylül aylarında, Amerikan Ulusal Savunma birimi NGA (The National Geospatial - Intelligence Agency)’nın 6 yeni gözleme istasyonu devreye girmiştir. Böylece her uydu herhangi bir zamanda iki farklı istasyon tarafından kontrol edilebilmektedir. Yakın zamanda kurulacak yeni istasyonlar ile her bir uydu en az üç istasyon tarafından kontrol edilebilir hale gelecektir. Şekil 22’de kontrol istasyonlarının dünya üzerindeki konumları gösterilmiştir [53]. 30 Şekil 22-GPS kontrol merkezleri Kullanıcı Bölümü GPS uydusu tarafından yayılan sinyalleri alan sivil veya askeri cihazlardan oluşmaktadır. Askeri GPS cihazları, savaş uçakları, tank, helikopter, gemi, cip, asker veya deniz altlarında temel iletişim faaliyetlerini veya hedef bulma işlevlerini yerine getirmek için kullanılmaktadır. 1 milyondan fazla sivil GPS kullanıcısı da bu bölümün kendine özgü bir parçasını oluşturmaktadır. Araştırmacılar GPS sistemini kullanarak zaman kazanırken, uçak ve gemi gibi taşıyıcı araçlarda konumlarını bu şekilde belirlemektedir. Aynı zamanda GPS takip sistemi sayesinden acil durumlarda araçlar en kısa yol rotalarını yine bu sistemi kullanarak belirlemektedir [53]. Konum Belirleme Sistem, temel olarak jeodezideki en eski tekniklerden biri olan “geriden kestirme” esasına dayanır. Geriden kestirme, konumu bilinmeyen bir noktadan konumu bilinen noktalara yapılan gözlem ve hesapları kapsar.[51] Konumu bilinen noktalar GPS uydularıdır. Bilinmeyenler, bulunulan noktanın yer merkezli (earth-fixed) kartezyen koordinatlarıdır (X,Y,Z). Matematik kuralı olarak bu 3 bilinmeyenin çözümü için 3 ölçü değeri yetiyor gibi gözükse de, saat hatalarını ortadan kaldırmak için en az 4 tane konumu bilinen uyduya ihtiyaç vardır. GPS, 4 boyutlu bir sistemdir (3D+zaman). Uydularla konum belirlemede uydu sinyallerinin bir alıcı tarafından kaydedilerek, sinyalin uydudan yayınlandığı an ile alıcıda kaydedildiği an arasında geçen süre çok hassas olarak ölçülür. Bu süre, sinyalin yayılma hızı ile çarpılarak uydu ile alıcı 31 arasındaki mesafe belirlenir, uydunun koordinatları zamana bağlı olarak bilindiğinden, alıcının konumu hesaplanabilir. Uydular, yüksek doğrulukla atomik saatler içerirler. Alıcının dünya üzerindeki konumunu hesaplamak için, GPS alıcısı sinyalin uydu tarafından yolladığı zamanı, sinyalin kendisine ulaştığı zaman ile kıyaslar ve uydunun, alıcıya olan uzaklığını hesaplar. Radyo sinyallerinin ışık hızıyla hareket ettiği düşünülürse (Radyo sinyalleri boşluktaki hızına çok yakın bir hızda atmosferde hareket ederler.) Yol = Hız * Zaman formülünden uydunun, alıcıya olan uzaklığı bulunabilir [55]. 5 5.1 MARMARA GPS TAKİP SİSTEMİ(MARMARA GPS TRACKER) Giriş Şekil 23-Marmara GPS Takip Marmara GPS Takip Sistemi, günümüz popüler teknolojilerinin avantajlarından yararlanılarak, gelişmekte olan teknolojiye bir katkı mahiyetinde ortaya konmuştur. Kapsamı geniş olup çok sayıda alana hitap etmektedir. Akıllı cep telefonları, tablet bilgisayarlar veya navigasyon cihazlarının büyük bir kısmı Android işletim sistemi tabanlı çalışmaktadır. Teknolojik gelişmelerin, 3G ile iletişimi üst seviyelere çekmesi ve ucuza satışa sunması, akıllı cihazlarda internet kullanımını yaygınlaştırmıştır. Öte yandan akıllı cihazlarda bulunan GPS alıcıları ile cihazlar, aldığı konum bilgilerini programcıya sunmaktadırlar. Konum bilgisinin bildirimi önem kazanmakta, büyük şirket veya işyeri sahipleri, çalışanlarının konumlarını bildirmelerini istemektedirler. Buna örnek olarak; büyük çaplı bir araç filosu bulunan şirketin, araçları tek tek takip etmeleri imkânsız olabilmektedir. Bunun yerine her araçta bulunan navigasyon cihazına yüklenen Marmara GPS Takip Sistemi Yazılımı ile gerekli ayarlamalar yapıldığında, şirket yetkilisi web sitesini ziyaret ederek belirlenen aralıklardaki konum bilgilerini alabilmektedir. Başka bir örnek ise aileden verilebilir. Türkiye ele alınacak olursa İstanbul, İzmir, Bursa, Ankara gibi büyük şehirlerde aile fertleri birbirleri ile küçük şehirlere oranla çok daha az görüşmektedirler, buna bağlı kopukluklar yaşanmaktadır. Şehir trafiği ve özel sektör günlük çalışma saatlerinin uzun olması aile büyükleri ile evlatları arasında istenmeyen belirsizliklere yol açabilmektedir. Kaybolan veya kaçırılan çocuklar ise her zaman aile büyüklerinin büyük korkusu olmuştur. Tüm bu 32 bilinmezlikleri ve istenmeyen olayları en aza indirgemek için, aile de akıllı bir cep telefonu bulunan çocuğun telefonuna Marmara GPS Takip Sistemi yüklenerek web sitesi ziyaretiyle telefonun takibi sağlanmaktadır. Ayrıca güvenliğin çok önemli bir parametre olduğu günümüz dünyasında konum belirlemenin ve bu belirleme sonucunda olaya müdahale edebilecek konuma en yakın kişilerle hızlı bir şekilde irtibat kurulabilecek bir sistemin varlığı güvenlik anlamında çok önemli bir avantajdır. 5.2 Benzer Çalışmalar GPS-CELL.com: GPS destekli telefonların bulundukları konumları GPRS yardımı ile internet üzerinden yine Google Maps servisini kullanarak kişilerin kendi bulundukları konumu öğrenmelerini amaçlayan bir servistir. Sistemin işleniş mantığında sadece tek bir kullanıcı vardır ve kullanıcılar kendi bulundukları veya sisteme bağı diğer kullanıcılar konumları Google Maps ile görebilmektedir [56]. Akıllı Yer Bulucu(Smart Location Finder): Akıllı Yer Bulucu (Smart Location Finder), popüler teknolojilerin birbirleriyle uyumlu bir şekilde entegrasyonu ile hazırlanmış ve günümüz problemlerinden birine çözüm bulmayı amaçlayan ve bu tez çalışmasında geliştirilen bir sistemdir.[57] 5.3 Sistem Tasarımı 5.3.1 Mobil Platform Marmara GPS Takip Sistemi programı, Mobil ve Web platformlarının bir arada ve iç içe çalışması amacıyla tasarlanmış bir sistemdir. Sistemin amacı, farklı iki konumda bulunan iki kullanıcının birbirinden haberdar olması olduğundan, Mobil platform gezici kullanıcıya, Web platform ise gözlemci kullanıcıya hitaben tasarlanmıştır. Burada ki gözlemci, gezgin olan kullanıcı da olabilmektedir. Her koşulda bir kişinin bir kişiyi gözetlemesi zorunluluk değildir. Programı cihazına yükleyen kişi, nerelerde bulunduğunu zamanlarıyla birlikte Web platformunda görebilmektedir. Sistem mobil platformdaki çalışma mantığı Şekil 24’de ayrıntılı olarak resmedilmiştir. Android Client olarak gösterilen bölüm, mobil platformda çalışan Android uygulamasını temsil etmektedir. Android uygulamasından alınan konum bilgileri Web Servis üzerinden MS-SQL veritabanına aktarılır. Aktarılan veri: IMEI Longitude(Boylam) Latitude(Enlem) Zaman Bilgisi İçermektedir. Alınan veriler veritabanında kayıtlı tutulur. 33 Şekil 24-Marmara GPS Takip Çalışma Stratejisi 5.3.1.1 Marmara GPS Takip Sistemi Programı Yazılması Marmara GPS Takip Sistemi programı, yapılan çeşitli araştırmalar ve çalışmalar sonucu tamamlanmıştır. Programın genel amacı alttaki şekilde özetlenebilir; Client bölümü belirlenen kullanıcı ismi, şifre ve IMEI bilgilerini web servis ile sunucu modülüne gönderir ve sisteme kayıt olması sağlanması Konum bilgilerini elde etme ve verilerin gönderilmesi Telefon durumunu dinle ve kapanmasına izin verme. Gelen çağrıları dinle, çağrı geldiğinde gelen çağrıya konum bilgisi gönder. Konum bilgilerini, kullanıcının belirlediği aralıklar ile internet bağlantısı ile sunucuya kaydetme Konum bilgilerinin Google Maps Android Api ile harita da gösterilmesi Program tasarımı bittikten sonra aşağıdaki bölümlerde gerekli görülen alanlara değinilmiştir. Gerekli açıklamalar yapılmıştır 34 Şekil 25:Marmara GPS Takip Programı 5.3.1.2 Client Bölümü Programın aktif halde konum ve yer bilgisini gönderebilmesi için sisteme aktif kaydının bulunması gerekmektedir. Program Android sisteme ilk kez yüklendiğinde kullanıcı adi, sisteme giriş şifresi, e-mail adresi ve eğer şirket numarası tanımlı ise şirket numarası girilip sisteme web servis yardımı ile MS-SQL Server’a kaydı gerçekleştirilir. 35 Şekil 26: Marmara GPS Takip Programı Kullanıcı Tanımlama Ekranı 5.3.1.3 GPS Bilgisinin Elde Etme ve Verilerin Gönderilmesi GPS bilgisinin sürekli olarak elde edilmesi gerekmektedir. Buradaki kasıt, telefonun ekranı karardığında veya beklemedeyken programın arka planda çalışması devam etmelidir. Bu işlemler Intents ve Broadcasts receivers konusunda anlatılmıştır. GPS Pozisyonunu almak için Android uygulamaları locationListener ve locationManager nesnelerini kullanabilmektedirler. LocationManager nesnesi üzerinden GPS_PROVIDER ve NETWORK_PROVIDER metotları kullanılabilmektedir. GPS_PROVIDER üzerinden GPS uydu sinyaller üzerinden alınan konum bilgileri elde edilir. GPS uydusuna erişim sağlanamadığında ise NETWORK_PROVIDER ile, eğer bir wireless bağlantısı var ise konum elde edilir. Location nesneleri elde ettiği konum bilgileri işleyerek programcıya longitude ve latitude olmak üzere iki değer döndürmektedir. Bu değerler, destek sağlayan herhangi bir harita uygulaması üzerinden girildiğinde konumu göstermektedir. Double _curLat; Double _curLng; mLocationmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Location l = mLocationmanager .getLastKnownLocation(LocationManager.GPS_PROVIDER); Log.e("setgpslocation ", "gps location"); if (l != null) { _curLat = l.getLatitude(); _curLng = l.getLongitude(); } else { Location l1 = mLocationmanager 36 .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (l1 != null) _curLat = _curLng = } else { _curLat = _curLng = }} { l1.getLatitude(); l1.getLongitude(); 0.0; 0.0; Kod Parçası 1 – GPS konum bilgisi elde etme Uygulamaya Android Manifest dosyasında android.permission.ACCESS_FINE_LOCATION izninin verilmesi gerekmektedir[63].GPS uydusuna erişim sağlanamadığında ise NETWORK_PROVIDER ile, eğer bir wireless bağlantısı var ise konum elde edilir .Uygulamaya Android Manifest dosyasında android.permission.ACCESS_COARSE_LOCATION veya android.permission.ACCESS_FINE_LOCATION izinlerinin verilmesi gerekmektedir[63]. Location nesneleri elde ettiği konum bilgileri işleyerek programcıya longitude ve latitude olmak üzere iki değer döndürmektedir. Bu değerler, destek sağlayan herhangi bir harita uygulaması üzerinden girildiğinde konumu göstermektedir. Uygulamanın kapalı olduğunda ve kullanıcının belirlediği aralıklarda konum ve yer bilgisinin gönderilmesi için uygulamanın arka planda sürekli çalışabilmesi için bir servise ihtiyaç duyar. Android servisler uygulamaların arka planda çalışan uygulama kapalı olduğunda bile çalışmasını sağlar.[64] Elde edilen konum bilgilerin ve Android cihazın IMEI bilgilerini Microsoft. Net ortamında oluşturulan web servisler yardımı ile veritabanına kayıt işlemi yapılır. .Net ortamında oluşturulan web servislerin Android ortamının kullanabileceği soap servislere yani class lara ve metotlara internet ortamındaki yardımcı bir araç ile dönüştürme işlemi yapılır.[65] Oluşturulan web servis class ve metotları projeye import edilir. Web servislerimiz artık ksoap2 standartlarında oluşturulmuş ve Android ortamında kullanıma hazır hale gelmiştir,ksoap2-android jar dosyasını da projeye dâhil etmemiz gerekir.[66] 5.3.1.4 Telefonun Durumunu Dinle ve Kapanmasına İzin Verme Marmara GPS Takip uygulamasının telefon kapanıp açılması durumunda, uygulama servisinin tekrardan çalışıp konum ve yer bilgisinin belirlenen aralıklarda gönderilmesi gerekmektedir. Android platform ’unda gerçekleşen durum değişiklikleri sistem bildirimi olarak kullanıcıya ulaştırılır. 37 5.3.1.4.1 Intents ve Broadcast Receivers kavramları Intent veri ve mesaj alış verişi mekanizmasını teşkil etmektedir. Veri ve mesaj alış verişi aşağıda listelenmiş olduğu gibi olmaktadır; Uygulamanın compenentleri arasında Farklı uygulamalar arasında Android platformu ile Intent bir uygulamanın bağımsız bileşenleri yani activity’lerini service’lerini, Content Provider veya Broadcast Receiver’ını bir sistem oluşturacak şekilde birleştirip bunların Android platformu ile bağlantısını sağlar. Android sistemi bileşen bazlıdır. Bu durumda bileşenleri birbirine bağlayan herhangi bir kaynak kod değişikliği gerektirmeyen, dokümantasyonu kolaylıkla yapılabilen bir mekanizmanın oluşturulması mantıklıdır. Bu mekanizma ile bileşenler diğer programcılar tarafından kullanılabilmekte veya başka bileşenler ile değiştirilebilmektedir. Farklı uygulamalar arasında direk iletişim normal şartlarda mümkün değildir. Android sisteminde Intent erişim hakkı sistemine bağlıdır. Android in erişim hakkı sisteminde bir iznin deklare edilmesi gerekmektedir. En çok kullanılan Intentler arasında, yeni bir activity’nin başlatılması gelir. Açık intentler çağrı programlandığında alıcı bileşen bellidir. Alıcı bileşen genellikle intent oluşturulduğunda ismi veya alan tanımlanmasıyla verilir. Intent intent = new Intent(this,activity2.class); startActivity(intent); Kod Parçası 2 – Intent oluşturma 1 Dolaylı intentler herhangi bir alıcı tanımlamamaktadırlar. Buradaki intentlerin reaksiyonun sistemde yüklü uygulamalar tarafından yapılması beklenir. Dolaylı intentler genellikle başka uygulamaların bileşenlerinin kullanılması gerektiğinde programa dâhil edilir. Örnek olarak uygulamada telefon arama bileşeninin kullanılması istenildiğinde dolaylı intent bileşenini kullanmalıyız. Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(“tel:05556963548”)); startActivity(intent); Kod Parçası 3 – Intent oluşturma 2 38 Şekil 27-Çağrı intenti Yukarıda intent in çalıştırılmasıyla telefon otomatik olarak aranacaktır. Dolaylı intentlerde bir aksiyon (intent. ACTION_DIAL) ve bir URI(Uniform Resource Identifier) tanımlanmaktadır. Aksiyon çağrılan bileşene ne yapması gerektiğini bildirirken, uri bileşeni ise gerekli verileri temin etmektedir. 5.3.1.4.1.1 Dolaylı Intent’ler için Intent Filtreleri Intent Filtreleri AndroidManifest.xml dosyasında deklare edilmektedirler. Bir intent filtresi üç elemandan oluşur. Bu elemanlar sayesinde hangi Intent’lere reaksiyon gösterilmesini istediğimizi tanımlamamız mümkün olmaktadır. Aşağıda kaynak kodu verilen bir intent filtresinin nasıl tanımlandığını göstermektedir. <activity android:name=”.Anasayfa” android:label=”@string/app_name”> <intent-filter> <action android:name=”android.intent.action.MAIN”/> <category android:name=”android.intent.category.LAUNCHER”/> </intent-filter> </activity> Kod Parçası 4 – Dolaylı intent için filtre Intent filtresi amaçlarını incelemek gerekirse; Action <action> elemanı intent filter’ın reaksiyon göstermesini istediğimiz aksiyonun tanımlanmasını sağlar. Intent filtreleme yöntemi ile Android platformunun uygulamarının bileşenlerine erişim izni vermektedir. Örneğin INTENT_ACTION_DIAL, action intent’ini kullanarak bir telefon numarasının kendi uygulamamız içerisinde aramamıza imkân tanımıştır. 39 Category Bir Intent filtresi birden fazla <category> elemanına sahip olabilmektedir. <category> activity’nin nasıl çağrılacağını tanımlamak için kullanılır. Genellikle android.intent.category.DEFAULT” kullanılır. Bu tanımlama ile Activity Manager’a Activity’nin normal bir şekilde çalıştırılıp ekrana yansıtılmasının istendiği belirtilmektedir. Bunun dışında “android.intent.category.Tab” tanımlamasında kullanılır. Bu tanımlama ile çağrılacak Activity’nin sekme (Tab) içerisinde görüntüleneceği belirtilir. Bir diğer tanımlama ise “android.intent.category.LAUNCHER” bu Activity’nin uygulamamızın ana sayfası olduğu deklare edilir. Data Bir intent’in gönderilmesi ile beraberinde bir URI de gönderilir.URI ler veri kaynağını tanımlamak için kullanılırlar. Intent filtresi içerisinde <data> elemanın kullanımı ile belirli bileşenleri sadece belirli URI’ler içerisinde ıntentlerin çağrılabilmesi mümkün hale getirilmiştir. Böylelikle bir <data>elemanının parametreleri ve özellikleri sayesinde bir URI’nin analizi mümkündür. URI oluşturan verilere göre filtreleme aşağıdaki gibi olmaktadır; Android:host : Host name tanımlaması (e.g., com.google). Android: mimetype : Mimetype tanımlaması için kullanılır .Burada özel bir tanımlama yada bilinen bir Mime-Type’lar kullanımına izin verilmektedir. <type android:value=”vnd.android.cursor.dir/*”/> Android: path: Verilerin bulunduğu yol burada tanımlanır. Android: port: Host tanımlanmamış ise bu dikkate alınmaz. Android: scheme: Verilere erişim şemasını belirler .(e.g., content or http). 5.3.1.4.1.2 Dolaylı Intent’lerde Filtreleme İşlemi Dolaylı intentlerin filtrelenmesi sırasında intent analiz edilmektedir. Bu sayade ulaşılmak istenen sonuç, Intent’e en uygun bileşenin bulunmasıdır. Bulunan bileşen sonuç olarak başlatılacaktır. Android ‘in Intent Analiz Kuralları Intent filtresinin, Action elemanlarının hiçbirinin, Intent’e uygun olmaması halinde Intent bileşene uygun değildir. 40 Intent’in her kategorisi için, filtre tanımlanmasında bir karşılığın deklare edilmesi gerekmektedir. Bu nedenden dolayı Intent’in Intent filtresi içerisinde tanımlanmamış kategoriler içermesi durumunda ıntent bileşene uygun değildir. Intent içerisinde URI’nin tanımlanmamış olması durumunda intent, intent filtresini dikkate almadan bileşeni başlatacaktır. Intent filtresinin fazla genel bir şekilde tanımlanması durumunda bir intent ‘e uygun birden fazla bileşen bulunabilir. Bu durumda Android, ekrana uygun olabilecek bileşenlerin listesini görüntüleyip seçime sunacaktır. Dolaylı intentlerin sıkça kullanılan örnekleri aşağıdaki gibidir. Telefon görüşmelerini sağlayan uygulama, MapActivity kullanarak harita verilerinin görüntülenmesi, e-mail ile standart e-mail verilerinin gönderilmesi, Özel kontak bilgilerinin depolanması ve yönetimi, web kit’in temelini oluşturulması ve yönetimi, Android market uygulaması ile yabancı uygulamaların aygıtımıza kurulumlarını sağlar, resim, video kaydı ve görüntülenmesi. Harita Üzerinde pozisyon verilerinin görüntülenmesi Android ile birlikte gelen standart uygulama olan harita yardımıyla enlem ve boylam verisini harita üzerinde görselleştirilmesi sağlanabilir. URI uri= Uri.parse(“geo:42.7201,24.0087?z=19”)); Intent intent = new Intent(Intent.ACTION_VIEW,uri); İntent.setData(uri); startActivity(intent); Kod Parçası 5 – İntent ile harita görüntüleme 5.3.1.4.1.3 Bir web sayfasının görüntülenmesi Bu intent yardımı ile yeni bir Android standart uygulaması olan Browser içerisinde bir Activity çağrılmaktadır. URI uri= Uri.parse(“http://marmara.edu.tr”)); Intent intent = new Intent(Intent.ACTION_VIEW,uri); İntent.setData(uri); startActivity(intent); Kod Parçası 6-Intent ile web sitesi görüntüleme 41 Şekil 28-Intent ile web sitesi görüntüleme 5.3.1.4.1.4 BroadCast Intent’leri Android platform ‘unda gerçekleşen durum değişiklikleri sistem bildirimi olarak kullanıcıya ulaştırılır. Broadcast Intent’leri Özel bir intent grubunu oluşturmakta olup uygulamalara sistem değişiklikleri hakkında bilgi verir. Normal Intentler gibi Broadcast Intent’leri de android.cantent.intent class’ında sabit değerler olarak tanımlanmış string’ler içerirler. Aşağıda bazı sistem durum değişiklikleri açıklamaları ile verilmiştir. ACTION_BOOT_COMPLETED :Android aygıtının Boot işleminin sonuçlandırılması durumunda gönderilir. Kullanımı için android manifest dosyasında RECEIVE_BOOT_COMPLETED izninin verilmesi gerekir. ACTION_CAMERA_BUTTON: Camera Butonuna basılması durumunda gönderilir. ACTION_DATE_CHANGED ve ACTION_TIME_CHANGED : Aygıtın tarih ve saat değişikliği manuel olarak yapıldığında broadcast yapan olaydır. ACTION_BATTERY_LOW: Android aygıtının şarj seviyesini belirli bir seviyenin altına düşmesi durumunda gönderir. ACTION_MEDIA_BUTTON: Media butonuna basıldığında tetiklenen broadcasttir. ACTION_SCREEN_OFF ve ACTION_SCREEN_ON : Aygıt ektanın kapalı veya açık olması durumlarında broadcast yapar. Broadcast Intent’leri birden fazla alıcı tarafından arka arkaya teslim alınabilir. Broadcast Intent’lerinin kendi uygulamamız içerisinden gönderme imkn-anına da sahip durumdayız. Bu durum nadir karşılaşılacak bir durum olacaktır. Çünkü Broadcast Intent’leri sistem bazlı gönderilirler, uygulama bazlı gönderilmeleri için bir neden yoktur. 42 5.3.1.4.1.5 BroadCast Receiver Broadcast Intent Receiver’ların tek görevi Broadcast Intenleri beklemektir. Broadcast Receiver’lar iki türlü tanımlanmaktadır. Bunlar;dinamik olarak tanımlanmış Broadcast Receiver’ları ve statik olarak tanımlanmış Broadcast Receiver’lardır. Dinamik olarak Tanımlanmış Broadcast Receiver’lar bir Activity veya Service içerisinde uyarlanır. Bu Receiver’lar sadece bileşen çalıştığı sürece aktif kalırlar ve sadece belirli broadcast intent’lerine reaksiyon gösterirler. Statik Broadcast Receiver’lar Android-Manifest dosyasında deklare edilirler.Intent filtrelerinden geçen tüm Intent’lere reaksiyon gösterirler. Uygulamanın çalışıp çalışmaması bu tür Broadcast Receiver’lar için önem taşımamaktadır. Broadcast Receiverımızın sadece telefon tekrar açıldığında çalışmasını sağlayan intent filtresini tanımladık. <receiver android:name=".OnBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> Kod Parçası 8 – Telefon çağrısı intent filtresi 5.3.1.5 Gelen çağrıları dinle, çağrı geldiğinde gelen çağrıya konum bilgisi gönderme Uygulamanın ayarlar bölümünde tanımlı olan telefon numarasından gelen çağrıyı tanır ve o anda bulunduğu konum bilgilerini Short Message Service (sms) verisi şeklinde otomatik gönderir. Android-Manifest dosyasında ise Broadcast intent’imizi filtrelemesini belirtiyoruz ve Sadece gelen çağrılarda intent reaksiyon da bulunmasını sağlarız. <receiver android:name="MyReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE"></action> </intent-filter> </receiver> Kod Parçası 9 – Telefon çağrısı intent filtresi 43 publicclass MyReceiver extends BroadcastReceiver { @Override publicvoidonReceive(Context context, Intent intent) { //intent ilegelendurumları Bundle üzerinealındı Bundle bundle=intent.getExtras(); if (bundle!=null) { //eğer bundle null değilse String state = bundle.getString(TelephonyManager.EXTRA_STATE); if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { String phoneNumber = bundle .getString(TelephonyManager.EXTRA_INCOMING_NUMBER); //Gelen çağrıyı toast ile ekranda görüntülendi Toast.makeText(context, phoneNumber, Toast.LENGTH_SHORT).show(); }}} Kod Parçası 10 – telefon çağrısı dinleme Şekil 29: Marmara GPS Takip Programı ayarlar ekranı 5.3.1.6 Konum bilgilerini, kullanıcının belirlediği aralıklar ile internet bağlantısı ile sunucuya kaydetme Marmara GPS uygulamasının ayarlar bölümünden konum bilgilerinin gönderme aralığını seçebiliriz. Uygulama yüklendiği zaman otomatik beş dakika ara ile gönderme işlemi gerçekleştirir. Ayrıca ayarlar bölümünden kullanıcı adı, mail adres, şifre ve şirket no gibi alanları düzenleyip istenilen değişiklikler yapılabilir. 44 Şekil 30: Marmara GPS Takip Programı gönderim aralığı seçimi 5.3.1.7 Konum bilgilerinin Google Maps Android Api ile harita da gösterilmesi Marmara gps projesinde kullanıcının kendi konumunu ve IMEI bilgisi girilen bir kullanıcının konum bilgilerini harita üzerinde gösterme işlemi için Google Android Maps Api Framework’ünden yararlanıldı. Bu Api Google Play Service SDK içinde gelir ve birçok zengin map özellikleri bulunmaktadır. 5.3.1.7.1 Google Map Api Key Alma Google Maps Api kullanacağımız için MD5 sertifikamızı Google’a onaylatmamız gerekiyor. Map Api Key uygulamamızın SHA-1 fingerprint olarak bilinen dijital imzasıdır. Bu benzersiz parmak izi , google maps uygulamasını tanımlamak için bir yol olarak kullanılır. SHA-1 fingerprint sertifikasyonu görüntüleme: cmd komut satırı ile öncelikle java klasörümüzün bin klasörüne konumlanıyoruz. Daha sonra aşağıdaki kod satırını debug.keystore yolunu belirtiyoruz ve sertifikasyon kodu görüntüleniyor.[67] keytool.exe -v -list -alias androiddebugkey -keystore C:\Users\Mesut\.android\debug.keystore -storepass android -keypass android 45 Şekil 31: Google SHA1 certification kodu alma Şimdi sıra Api Key almak için https://code.google.com/apis/console/# adresine giriyoruz ve Create Project ile proje ismini veriyoruz.Daha sonra Services bölümünden Google Maps Android API v2 aktif ediyoruz. Şekil 32: Google Map Api'yi Android e aktif etme Sonra sol taraftaki API Acces sekmesine geçiyoruz. Ve Create New Android Key.. Tıklıyoruz. Burada Android de kullanmak için api key alıyoruz. Başka ortamlarda map api kullanmak için All Service kısmından ilgilendiğiniz kısmı aktif(on)yapmalısınız. 46 Şekil 33: Android Api key oluşturma Daha sonra SHA1 kodunu yukarıdaki gibi yapıştırıyoruz ve ardından ; koyarak bilgisayarımızda oluşturduğumuz projenin paket adını yazıyoruz. Ve Create butonuna bastığımızda API key oluşturulmuş oluyor. Şekil 34: Android Api Key 5.3.1.7.2 Uygulamaya Google Map Api dahil edilmesi Uygulamaya google mapa Apisi eklemek dosyasında bir takım ayarlamalar yapmamız gerekiyor. Öncelikle projemize “google-play_service_lib” dosyasını import ediyoruz. Ekleme işleminden sonra projeyi sağ tıklayıp Android Tools seçeneğinden Android Support Library seçeneğini seçiyoruz. Android Support Library yi indiriyoruz. AndroidManifest dosyasından uygulamanın çalışması için bir takım izinler vermemiz gerekir. 47 <permission android:name="com.example.androidapp.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.androidapp.permission.MAPS_RECEIVE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> Kod Parçası 11: Android Google Map izinleri Ayrıca Google Maps API V2 opengles kullanıyor. Bunu da manifest dosyası içinde belirtmemiz gerekiyor. <uses-feature android:glEsVersion="0x00020000" android:required="true"/> Kod Parçası 12: Opengles dahil etme Application tagları içine meta-data yı ekliyoruz ve ilgili yere kendi almış olduğumuz api keyi yazıyoruz. <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyDXQId9pyKQTFuD_T5nNQoksbGN-wJh6k"/> Kod Parçası 13: Android Google Api Key belirtmesi Bu şekilde AndroidManifest dosyasını düzenlemiş olduk. MapActivity sınıfımız ise haritayı görmek için FragmentActivity sınıfından türemelidir. public class MapActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map_layout); } } Kod Parçası 14: Google Map i layout a map etme Uygulamayı kullanan kişinin kendi konumlarını görmesi için web servisten o telefonun IMEI numarasına göre bulunduğu konumlar getirir. Ve haritada her bulunduğu konum için bir marker atılır. Kullanıcının kendi konumlarını haritada gösteren MapActivity’nin ekran görüntüsü aşağıdaki gibidir. 48 Şekil 35: Android Map görüntüsü Konum getir ekranın da ise kullanıcının haritada görmek istediği bir kullanıcının IMEI bilgisini ekrandaki EditBox’a girerek, girdiği o imei numarasına ait kullanıcının bulunduğu konum ve yer bilgilerini harita üzerinde markerlara ekleyerek haritada gösterir. Activitiy’nin ekran görüntüsü aşağıdaki gibidir. 49 Şekil 36: Android Map Görüntüsü 5.3.2 Sunucu Kısmı 5.3.2.1 Veritabanı Tasarımı ve Oluşturulması Projenin konum bilgilerini ve kullanıcı bilgilerini kaydetmek üzere bir veritabanına ihtiyaç duyarız. Bunun için oluşturacağımız veritabanı Mssql veritabanın da üç tablodan oluşacaktır. Bunlar; Konum, Kullanıcı ve Şirket adında üç adet tablomuz mevcuttur. Kullanıcı adlı tablomuz imei, sifre, sirket_id ve kul_email adında alanlardan oluşur . imei alanı primerykey ve nvarchar(50) türünde, sifre alanı nvarchar(50) türünde, sirket_id alanı int ve kul_email alanı ise nvarchar(50) türünde tanımlamamızı yapıp tablomuzu oluşturuyoruz. 50 Şekil 37-kullanıcı tablosu Konum adlı tablomuz da ise konum_id PrimeryKey olarak ve int türünde tanımlıyoruz, longitude verilerini kaydetmek için lon adında ve nvarchar(50) türünde alanı tanımlıyoruz, latitude verilerini kaydetmek için lat adında ve nvarchar(50) türünde alanı oluşturuyoruz. imei alanını tutan nvarchar(50) veri türünde tanımlıyoruz ve konum bilgisinin ne zaman kaydedildiğinin tutulacağı zaman adındaki alanımızı datetime veri türünde tanımlayıp konum tablomuzu oluşturmuş oluyoruz. Şekil 38-Konum tablosu Uygulamamızın bir diğer tablosu olan sirket tablosunda ihtiyacımız olan alanlar sirket_id PrimeryKey olarak tanımlıyoruz ve int veri türünde bu alanı tanımlıyoruz, şirket adini tutan sirket_adi alanını nvarchar(500) türünde tanımlıyoruz, şirket şifresini tutacak olan sirket_sifre nvarchar(50) veri türünde tanımlıyoruz. Böylelikle sirket adındaki tablomuzu da oluşturmuş olduk. Şekil 39-Şirket Tablosu sirket, konum ve kullanıcı adındaki tablolarımızı yukarıdaki gibi oluşturduktan sonra bu tablolar arasındaki ilişkiyi belirtmemiz gereklidir. Veritabanındaki tablolarımızı aşağıdaki gibi ilişkilendirdikten sonra artık tablolarımız veri kayıtları için hazır duruma getirmiş olduk. 51 Şekil 40-Veritabanı Diagramı 5.3.3 Web Platform Tasarımı 5.3.3.1 Giriş Projenin web ayağında kökü çok eskiye dayanan ve gelişmesini hızla sürdüren Microsoft firmasının .NET teknolojisi kullanılmıştır. Repository ve Model-viewController(MVC) gibi tasarım mimarisi kullanılarak mimari oluşturulmuş ve kod okunurluğu artırılmaya çalışılmıştır. Oluşturulan veritabanı ve web projesi arasındaki bağlantı, ORM(Object Relational Mapping) frameworklerinden biri olan entity framework ile sağlanmıştır. Entity Framework(EF) ile alınan veritabanı nesnesi üzerindeki tüm işlemler repository tasarım mimarisi ile tamamen site kodlarından ayrılmış ve ek bir projenin içinde yapılmıştır. Sitenin kodlanması MVC tasarım mimarisi ile yapılmıştır. 5.3.3.2 ORM(Object Relational Mapping) ve Entity Framework ORM, veritabanında oluşturulan her bir nesneye (tabloya) karşılık uygulama tarafında bir nesne oluşturma işidir. Bu işlem bazı frameworklerde ara yazılımlar sayesinde (ORM Tools), bazı frameworklerde ise elle gerçekleştirilir. [58] ORM ile veritabanı nesnesi oluşturulur ve bütün işlemler bu nesneler üzerinden giderek yapılır. Bu işlem hem performans hem de kodun okunurluğu açısından programcıya büyük kolaylıklar sağlar. Entity framework ise .Net framework 3.5 ile Micorosft’un hayata geçirdiği ve pratikliği artıran bir frameworktür. Veritabanındaki tabloları class’lara, kolonları property’lere, kayıtları ise objelere dönüştürerek uygulamanın direkt olarak veritabanına erişmesine gerek kalmadan tüm veri tabanı işlemlerini gerçekleştirir.[59] Böylece veritabanı işlemlerinin Sql kodları yazmadan nesneler üzerinden kolayca yapılmasını sağlar. Veri tabanına yapılacak olan CRUD (Create Read Update Delete) işlemleri ORM aracı tarafından algılanır ve yapılacak olan işlem Sql kodlarına dönüştürülür. Bu işleme Code Generating denir. Günümüzde birçok ORM aracı bulunmaktadır. Java tabanlı olarak Hibernate, Flex’de Athena Framework, Delphi’de ECO gibi. Entity Framework ise Microsoft tarafından 52 geliştirilen .Net tabanlı bir ORM aracıdır. Entity Framework ile kolayca CRUD işlemleri yapılabilir. Entity frameworkün bazı özellikleri aşağıda sıralanmıştır: Veritabanı işlemleri ile ilgili kod yazımı en aza ineceğinden minimum zamanda maksimum iş çıkartmayı sağlar. OOP düzeninde kod yazmayı sağlar. Veritabanı olarak esnek yapıya sahiptir. Veritabanı bağımlılığı yoktur. Proje içinde oluşturulan tablolar otomatik olarak veritabanında da oluşturulacaktır. Maintenance daha kolaydır. 5.3.3.3 Repository Tasarım Mimarisi(Repository Pattern) Repository tasarım mimarisi, veri merkezli uygulamalarda veriye erişimin ve yönetimin tek noktaya indirilmesini sağlayan bir tasarım desenidir.[60] Çoğu uygulamalarda proje içinden veriye erişilmek istenir ve proje boyunca bu veriler işlenerek devam edilir. Repository pattern ile temel amaç, sürekli tekrar eden veri bağlantılarını bir arada toplayarak işlemlerin tekrar etmesini engellemektir. Repository pattern kullanılmadan oluşabilecek sıkıntılar aşağıda listelenmiştir:[61] Kod tekrarı Hata olma ihtimalinin giderek büyümesi İşlem yerlerinin karıştırılması Cache yapma gibi işlemlerde yaşanan zorluklar Test yapılmasının zorlaşması 53 5.3.3.4 MVC (Model-View-Controller) Tasarım Mimarisi(MVC Pattern) Şekil 41:MVC-(Model-View-Controller) Adını Model View Controller'in baş harflerinden alan tasarım desenidir. (Design Pattern) Sunduğu katmanlı mimari sayesinde, uygulamanın kullanıcı arayüzü ve mantık kısmını birbirinden ayırır. Bir platformdan bağımsız olarak C#, Java, Ruby on rails, Python vb. dillerde de kullanılabilir. [62] Model-View-Controller mimarisinin her bir öğesi aşağıda açıklanmıştır. 5.3.3.4.1 Model İş mantığı (Business Logic) bölümüdür. Tek katmandan oluştuğunda genelde veritabanına kayıt ekleme, kayıt çekme, kayıt silme vb. veritabanı işlemleri için kullanılır. Controller'den gelen değerleri işler ve geriye döndürür. Model katmanında herhangi bir kullanıcı çıktısı(output) işlemi yapılmaz. Kullanıcıya çıktı işlemi view bölümünde yapılmaktadır. 5.3.3.4.2 View Uygulamanın kullanıcıya gösterilen ara yüzünün bulunduğu katmandır. Html, Css, Javascript vb. bu katmanda bulunur. Bu bölümde minimum programlama dili kodunun yazılması hedeflenmektedir. for, foreach, while vb. döngüler ile birlikte, dinamik değerleri ekrana yazdırmak için output komutları sıklıkla kullanılır. 54 5.3.3.4.3 Controller Uygulamanın karar mekanizmasıdır. Model ile View arasında köprü görevi görür. View katmanından gelen istekleri(request) model'e gönderir ve Model katmanından aldığı verileri view'e aktarır. Kullanıcı controller’daki kodla ilgilenmez. Controler ile sadece view iletişim kurar. View dan istek(request) veya cevap(response) işlemleri yapıalcağı zaman controllera başvurulur ve view controller a bağlı olarak yönlendirilir. Güvenlik açısından da programlama dilinin arka kısımda çalışması önerilmektedir. 5.3.3.4.4 MVC (Model-View-Controller) Kullanımının avantajları MVC tasarım mimarisi kullanımının bazı avantajları aşağıda sıralanmıştır. [62] Kullanıcıya sunulacak kodlar ile (Html, Css vb.) , sistemin çalışmasını sağlayan mantıksal kodları birbirinden ayırarak temiz ve düzenli kod yazımını kolaylaştırır. Kodlarda daha kolay optimizasyon yapılmasına, genişletilmesine ve yeniden kullanılmasına olanak sağlar. Ekip olarak çalışılan projelerde görev paylaşımını ve kodların okunabilirliğini arttırarak takım çalışmasına olanak sağlar. Kullanıcı ara yüzünde yapılacak değişiklikler iş mantığı kısmından bağımsız olarak yapılabilir. (Front-End Developer, Back-End Developer birbirinden bağımsız olarak çalışabilir.) Hata ayıklamayı ve kodu test etmeyi kolaylaştırır. Browser adres çubuğunda kullanıcının anlayacağı şeklinde sayfalara ulaşma imkânı sunar. 5.3.3.5 Marmara GPS Web Projesinin Tasarımı Marmara GPS projesinin web platformunun tasarımı Microsoft firmasının Visual Studio Professional 2012 IDE’si ile geliştirilmiştir. Web sitesi oluşturmak için Visual Studio’nun “FileNewProject” yolu izlenerek “ASP.NET MVC 4 Web Application” seçeneği seçilir. Açılan ekrandan “Internet Application” seçilir ve tamam diyerek projenin ana hatları oluşturulmuş olur. Visual Studio programcı için gerekli çoğu alanı otomatik olarak eklemektedir. İlk oluşan projenin görüntüsü şekil 32 de gösterilmiştir. 55 Şekil 42:Yeni oluşturulan MVC Projesi MVC projesi oluşturulduktan sonra, Solution Explorer penceresi üzerinde Solution üzerine sağ tıklanarak “Add New Project” seçeneği seçilir. Eklenecek proje “Class Library” tipinde olacak ve Repository pattern ile veri haberleşmesi için kullanılacaktır. Oluşan projenin görüntüsü şekil 43’tedir. 56 Şekil 43:Repository Pattern 5.3.3.6 JQuery-UI Map ile Konumların gösterilmesi Jquery, javascript dilinde açık kaynak kodlu geliştirilen bir kütüphanedir. Açık kaynak kodlu olması dolayısıyla hızla gelişmektedir. Jquery, web formlarında programcıya büyük kolaylıklar, kullanıcıya da görsel formlar sunmaktadır. Projede jquery-ui map kullanarak, kullanıcının konum bilgileri alınarak istenilen kişiye sunulmaktadır. Harita üzerine bütünleşmiş edilen form ile istenilen kişinin, istenilen zamandaki konum bilgilerine ulaşılabilmektedir. Şekil 44: JQuery_UI Map ile harita üzerinde konum gösterimi Web sitesine yapılan kullanıcı girişiyle, Core projesinden alınan konum bilgileri Web projesinde View’a aktarılır. View da tüm işlemler Javascript dili ile yapılmaktadır. 57 Harita sayfası ilk açıldığında Tarih aralığı bir gün öncesini kapsamaktadır. Kullanıcı isteğine göre tarih değiştirdiğinde sayfa yenilenerek yeni konumlar map e eklenmekte veya çıkarılmaktadır. Şirket olarak giriş yapıldığında, şirkete bağlı tüm üyelerin kaydı map e eklenmektedir. Şirket yöneticisi istediği kişileri solda bulunan menüden filtreleyerek yollarını izleyebilmektedir. İşaretlerin üzerinde bir kez tıklandığında, hangi kullanıcıya ait olduğu ve zamanı yazmaktadır. 6 SONUÇ Bu tez çalışmasında GPS(Global Positioning System) teknolojisinin, günümüzde popüler olarak kullanılan akıllı cep telefonları, navigasyon cihazları ve bazı gömülü sistemlerden konum bilgileri alınarak kullanıcıya sunulması amaçlanmıştır. Amaç doğrultusunda geliştirilen proje Android işletim sistemi bulunan akıllı telefonlarda ve navigasyon cihazlarında denenmiştir. Sistem, yapılan değerlendirmeler sonucunda, test yapan kişiler tarafından yeterli bulunmuştur. Projede kullanılan yeni nesil teknolojilerin, gerek sistem işleyişine gerekse de görsele hitap ettiği düşünülmektedir. Geliştirilen uygulama ile şirket veya kullanıcı, telefonuna yüklediği uygulama ile konum bilgilerini izleyebilmektedir. Android uygulaması, kullanıcıya ilk açılış ekranında kişisel bilgiler sorduktan sonra kullanıcı kaydını tamamlamakta ve kullanıcının belirttiği aralık ile konum bilgisini göndermektedir. Kullanıcının girdiği kişisel bilgiler ile web sitesine girişi sağlanmaktadır. Şirket açmak için siteye girerek kayıt olmak gerekmektedir. Marmara GPS Takip uygulaması ile şirketlerin çalışanlarını ya da araçlarını takibi minimum maliyete indirilmek istenmiştir. Herhangi ek bir cihaza gerek kalmadan, Navigasyon cihazı veya Android işletim sistemine sahip bir telefonla konum tespiti sağlanmaktadır. Ek özellik olarak, eğer telefonda numara tanımlı ise cihaza yapılan çağrı karşılığında, konum bilgileri mesaj ile gelmektedir. Bu durum ise, internet bağlantısı yapılmadığı ancak GPS sinyallerinin alınabildiği durumlarda çok önem kazanmaktadır. 58 7 KAYNAKÇA [1] Elgin, Ben (August 17, 2005). "Google Buys Android for Its Mobile Arsenal". Bloomberg Business week. Bloomberg. Archived from the original on February 24, 2011. Retrieved 2012-02-20. "In what could be a key move in its nascent wireless strategy, Google (GOOG) has quietly acquired startup Android, Inc., ..." [2] "Industry Leaders Announce Open Platform for Mobile Devices" (Press release). Open Handset Alliance. November 5, 2007. Retrieved 2012-02-17. [3] "T-Mobile G1 Spec". Infosite and comparisons. GSM Arena. Retrieved 12 September 2012. [4] "Android Overview". Open Handset Alliance. Retrieved 2012-02-15. [5] "Google Play Matches Apple's iOS With 700,000 Apps". [6] "Google Play hits 25 billion downloads". [7] "Google's Android becomes the world's leading smart phone platform". Canalys. January 31, 2011. Retrieved 2012-02-15. [8] "Custom ROMs For Android Explained - Here Is Why You Want Them". 2012-0820. Retrieved 2012-09-15. [9] "Android Marks Fourth Anniversary Since Launch with 75.0% Market Share in Third Quarter, According to IDC - prUS23771812". Idc.com. Retrieved 2012-11-03. [10] "500 million devices activated globally, and over 1.3 million added every single day.". official Android Engineering teams. 2012-09-12. [11] Markoff, John (November 4, 2007). "I, Robot: The Man Behind the Google Phone". The New York Times. Retrieved 2012-02-15. [12] Kirsner, Scott (September 2, 2007). "Introducing the Google Phone". The Boston Globe. Archived from the original on January 4, 2010. Retrieved 2012-02-15. [13] "T-Mobile Brings Unlimited Multiplayer Gaming to US Market with First Launch of Nokia N-Gage Game Deck" (Press release). T-Mobile. September 23, 2003. Retrieved 2012-02-15. [14] Block, Ryan (August 28, 2007). "Google is working on a mobile OS, and it's due out shortly". Engadget. Retrieved 2012-02-17. [15] Sharma, Amol; Delaney, Kevin J. (August 2, 2007). "Google Pushes Tailored Phones To Win Lucrative Ad Market". The Wall Street Journal. Retrieved 2012-02-17. 59 [16] "Google admits to mobile phone plan". directtraffic.org. Google News. March 20, 2007. Archived from the originalon July 3, 2007. Retrieved 2012-02-17. [17] McKay, Martha (December 21, 2006). "Can iPhone become your phone?; Linksys introduces versatile line for cordless service". The Record (Bergen County): p. L9. Retrieved 2012-02-21. "And don't hold your breath, but the same cell phone-obsessed tech watchers say it won't be long before Google jumps headfirst into the phone biz. Phone, anyone?" [18] Claburn, Thomas (September 19, 2007). "Google's Secret Patent Portfolio Predicts gPhone". InformationWeek. Retrieved 2012-02-17.[dead link] [19] Pearce, James Quintana (September 20, 2007). "Google's Strong Mobile-Related Patent Portfolio". mocoNews.net. Retrieved 2012-02-17. [20] ^ "T-Mobile Unveils the T-Mobile G1 - the First Phone Powered by Android". HTC. September 23, 2008. Archived from the original on July 12, 2011. Retrieved 2012-02-17.AT&T's first device to run Android was the Motorola Backflip. [21] Brodkin, Jon (2012-11-05). "On its 5th birthday, 5 things we love about Android". Ars Technica. Retrieved 2012-11-09. [22] "[Android 4.2.1 hits AOSP] 4.2.1 in AOSP". 27/11/2012. [23] "Licenses" (in englisch). Android Open Source Project.. Open Handset Alliance. Retrieved 2012-09-09. "The preferred license for the Android Open Source Project is the Apache Software License, 2.0. [...] Why Apache Software License? [...] For userspace (that is, non-kernel) software, we do in fact prefer ASL2.0 (and similar licenses like BSD, MIT, etc.) over other licenses such as LGPL. Android is about freedom and choice. The purpose of Android is promote openness in the mobile world, but we don't believe it's possible to predict or dictate all the uses to which people will want to put our software. So, while we encourage everyone to make devices that are open and modifiable, we don't believe it is our place to force them to do so. Using LGPL libraries would often force them to do so." [24] ^ a b "Touch Devices | Android Open Source". Source.android.com. Retrieved 2012-09-15. [25] ^ "Real Racing 2 Speeds Into The Android Market – Leaves Part 1 In The Dust". Phandroid.com. 2011-12-22. Retrieved 2012-09-15. [26] ^ "Widgets | Android Developers". Developer.android.com. Retrieved 2012-09-15. [27] ^ "UI Overview | Android Developers". Developer.android.com. Retrieved 201209-15. 60 [28] ^ "Notifications | Android Developers". Developer.android.com. Retrieved 201209-15. [29] ^ Ganapati, Priya (June 11, 2010). "Independent App Stores Take On Google's Android Market". Wired News. Retrieved 2012-02-20. [30] ^ "Android Compatibility". Android Open Source Project. Retrieved 2012-02-20. [31] ^ Chu, Eric (13 April 2011). "Android Developers Blog: New Carrier Billing Options on Android Market". android-developers.blogspot.com. Retrieved 15 May 2011. [32] ^ "Google Play hits 25 Billion downloads, 675,000 apps and games". [33] ^“Google Hizmet Şartları” Android Central 1 Mart 2012 [34] ^“New Seller Countries in Google Play” Android Central. April 12, 2012. [35] ^ "Tools Overview". Android Developers. 21 July 2009. [36] ^ At http://source.android.com [37] ^ John McCann (2012-12-13). "Android 4.1 Jelly Bean source code released | News". TechRadar. Retrieved 2012-12-20. [38] ^ "Building for devices". Android Open Source Project. Retrieved 2012-12-20. [39] ^ "The truth about Android task killers and why you don't need them". PhoneDog. 2011-06-26. Retrieved 2012-10-30. [40] ^ "Updates". Lifehacker.com. Retrieved 2012-11-02. [41] ^ "Android Security Overview". Android Open Source Project. Retrieved 2012-0220. [42] ^ PDroid – The Better Privacy Protection – xda-developers [43] ^“Googler: Android antivirus software is scareware from sharlatans” Cnet NewsStephen Shankland 18 Kasım 2011 [44] ^ Lunden, Ingrid (2011-09-30). "Symbian Now Officially No Longer Under The Wing Of Nokia, 2,300 Jobs Go".moconews.net. Retrieved 30 September 2011. [45] "Java SE 7 Features and Enhancements". Oracle Corporation. Retrieved January 1, 2013. [46] http://www.aero.org/education/primers/gps/, The Global Positioning System, 10/12/2008 61 [47] http://www.trimble.com/gps/whygps.shtml, GPS Tutorial, 15/12/2008 [48] http://scign.jpl.nasa.gov/learn/gps2.htm, GPS: How Does It Work?, 30/12/2008 [49] http://www8.garmin.com/aboutGPS/, Garmin: What is GPS ?, 05/01/2009 [50] http://www.colorado.edu/geography/gcraft/notes/gps/gps_f.html , Global Positioning System Overview, 10/01/2009 [51] Boğaziçi Üniversitesi Kandilli Rasathanesi Deprem Araştırma Enstitüsü Jeodezi Ana Bilim Dalı, Global Konum Belirleme Sistemi(GPS), Kasım 2010 [52] http://www.faa.gov/about/office_org/headquarters_offices/ato/service_units/techops/ navservices/gnss/gps/controlsegments/ , GPS - Control Segment, 18/01/2009 [53] http://www.kowoma.de/en/gps/control_segment.htm, GPS System – Control Segment (Monitor Stations), 08/01/2009 [54] http://www.faa.gov/about/office_org/headquarters_offices/ato/service_units/techops/ navservices/gnss/gps/usersegments/ , GPS - User Segment, 18/01/2009 [55] http://www.faa.gov/about/office_org/headquarters_offices/ato/service_units/techops/ navservices/gnss/gps/usersegments/ , GPS - User Segment, 18/01/2009 [56] http://www.gps-cell.com/, GPS-CELL, 08.04.2009 [57] Yiğit, E.(2009) GPS Teknolojisi ile Konum Tespit sistemi Tasarımı,Yüksek Lisans Tezi, Beykent Üniversitesi Fen Bilimleri Enstitüsü. [58] http://www.yazilimdevi.com/Makaleler-721-orm-object-relational-mappingnedir.aspx , ORM Nedir 13.05.13 [59] http://blog.alisuleymantopuz.com/2012/11/13/entity-framework-nedir/ Entity framework nedir 13.05.13 [60] http://www.bayramucuncu.com/repository-pattern-nedir/ Repository pattern nedir? 10.04.13 [61] http://msdn.microsoft.com/en-us/library/ff649690.aspx Repository pattern 01.05.13 [62] http://www.webteders.com/blog/detay/MVC-Nedir.-MVC-nin-avantajlarinelerdir./11 MVC nedir 10.04.13 [63] http://developer.android.com/reference/android/Manifest.permission.html 62 [64] http://developer.android.com/reference/android/app/Service.html [65] http://www.wsdl2code.com/pages/home.aspx [66] http://ksoap2.sourceforge.net [67] https://developers.google.com/maps/documentation/android/start#installing_the_google _maps_android_v2_api] 63