gps sinyalleri ile konum belirleme ve raporlama

Transkript

gps sinyalleri ile konum belirleme ve raporlama
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 HelpInstall 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 WindowPreferences 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
AyarlarUygulamalarGeliş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 “FileNewProject” 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

Benzer belgeler