GPS SİNYALLERİ İLE KONUM BELİRLEME VE RAPORLAMA … · API Application Programming Interface...

69
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

Transcript of GPS SİNYALLERİ İLE KONUM BELİRLEME VE RAPORLAMA … · API Application Programming Interface...

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

i

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

ii

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

iii

İÇİNDEKİLER

KISALTMALAR ........................................................................................................................................ 1

ÖZET ...................................................................................................................................................... 2

ABSTRACT.............................................................................................................................................. 2

1 GPS TAKİP SİSTEMLERİ ................................................................................................................. 3

1.1 GİRİŞ ................................................................................................................................................ 3

1.2 AMAÇ .............................................................................................................................................. 3

1.3 İÇERİK .............................................................................................................................................. 3

2 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

iv

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 GİRİŞ .............................................................................................................................................. 26

4.2 GPS .............................................................................................................................................. 26

5 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 Veritabanı Tasarımı ve Oluşturulması ..................................................................................... 50

5.3.3 Web Platform Tasarımı ...................................................................................................... 52 5.3.3.1 Giriş ......................................................................................................................................... 52 5.3.3.2 ORM(Object Relational Mapping) ve Entity Framework ......................................................... 52 5.3.3.3 Repository Tasarım Mimarisi(Repository Pattern) .................................................................. 53 5.3.3.4 MVC (Model-View-Controller) Tasarım Mimarisi(MVC Pattern) ............................................. 54

5.3.3.4.1 Model ................................................................................................................................ 54 5.3.3.4.2 View ................................................................................................................................... 54 5.3.3.4.3 Controller ........................................................................................................................... 55

v

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

1

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

2

Ö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

3

1 GPS TAKİP SİSTEMLERİ

1.1 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

4

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-View-

Controller), 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 ANDROID İŞLETİM SİSTEMİ

2.1 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ı,

5

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]

6

Ş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 API seviyesi kullanım (3 Aralık

2012)

4.2 Jelly Bean 13 Kasım 2012 17 0.8%

4.1.x Jelly Bean 9 Temmuz 2012 16 5.9%

4.0.x

Ice Cream

Sandwich

16 Aralık 2011 15 27.5%

8

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]

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, EV-

DO, 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.

Şekil 2-Jelly Bean Samsung Galaxy Note 2

9

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.

10

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

11

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

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.

Şekil 3-Play Store

12

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]

13

Ş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

14

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]

15

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

işlem cihaza hiçbir erişim gerçekleştiremeden sonlanır.[41]

Bu konuyla ilgili çok sayıda üçüncü parti uygulama cihazın

güvenliğini sağlamaktadır.[42]

Şekil 5-Google Play Store

Uygulama indirme

16

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 MOBİL UYGULAMA GELİŞTİRME ORTAMLARI

3.1 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.

17

Ş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.

18

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

19

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.

Eclipse ADT eklentisi

Android SDK Araçları

Android Platform araçları

En son Android platformu

3.4 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.

20

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.

21

Ş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 Şekil 10-Android SDK Download for other

platformları

22

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.

23

Gelen pencerede HelpInstall New Software seçilerek yeni çalışma alanı olacak

Android Eclipse tanıtılacaktır.

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.

Şekil 11-Eclipse-Install new software

24

Bu işlemi

gerçekleştirdikten sonra Work with-2 kısmında girdiğiniz değerler gözükecektir.

Girmiş olduğunuz adresten yazılım paketleri-3 getirilecektir. Paketlerin hepsi seçilir,

çünkü bu paketler uygulama geliştirmek için gerekecektir ve Next-4 butonuna tıklanır.

Açılan pencerede paketlerin yükleme durumu görülebilir. Yükleme tamamlandıktan

sonra diğer adıma geçiniz. Ama eğer Android SDK'yı kurmamış iseniz diğer adıma

geçmeden önce kurmalısınız.

Eclipse üzerinde WindowPreferences seçeneğine tıklanarak açılan pencerede sol

menüden Android sekmesi seçilir. Kurulu olan Android SDK'nın bilgisayar üzerindeki

yerini gösterip ve OK butonuna tıklayarak pencereyi kapatılır.

Şekil 13-Window--> Preferences

Tüm bunları tamamladıktan sonra Window Android SDK and AVD

Manager seçeneğine tıklanır. Açıldığında birkaç defa pop-up pencerelerde bazı

işlemler gerçekleşecektir. Biraz beklemek gerekecektir. İşlemler gerçekleştikten sonra

Android ile ilgili paket yükleme işlemlerini gerçekleştirilebilir. Buradan istenilen

alanlar seçilebilir ya da hepsi seçilerek yüklenebilir. Yükleme süresi seçilen dosya

boyutuyla doğru orantılı artıp azalacaktır. Hepsinin seçilip yüklemesi önerilir ancak bu

biraz zaman alacaktır.

Şekil 14-Android AVD yüklemesi

Şekil 12-Android yükleme işlemleri

25

3.5.4 Sanal cihaz oluşturmak

Geliştirme ortamı oluşturmak için gerekli olan tüm ihtiyaçların yüklemesi bittikten

sonra, geliştirilen programların testi için sanal cihaz oluşturmak geliştiricinin yararına

olacaktır. Sanal cihazlar, geliştirilen programların farklı boyutlarda ve farklı Android

sürümlerinde nasıl çalıştığıyla ilgili %100’e yakın bilgiyi geliştiriciye vermektedir.

Geliştirilen uygulama gerçek cihaz üzerinde de çalıştırılabilmektedir. Geliştirilen

uygulamayı gerçek cihaz üzerinde çalıştırmanın hata payı olmasa da her türlü Android

sürümüne sahip ve her genişlikte cihaza sahip olunamayacağı için sanal cihaz

gerekmektedir. Gerçek cihaz üzerinde programın testi için yapılması gerekenler basittir.

Bunun için, cihazın USB kablosu ile bilgisayara bağlanması ve Android üzerinde

AyarlarUygulamalarGelişim ve buradaki “USB hata ayıklama” ve ”Sahte

konumlara izin ver” seçenekleri aktif edilmelidir. Android işletim sistemi üzerinde

farklılık gösterse de “USB hata ayıklama” ve ”Sahte konumlara izin ver” seçeneklerine

ulaşmak genel yapısı itibari ile böyledir.

Sanal cihaz oluşturmak için Menüden, Window”Android SDK and AVD” seçeneği

seçilir.

Şekil 15-Android sanal cihaz oluşturma 1

Açılan pencereden yüklü paketleri ve şu an ulaşılabilecek paketleri görebilirsiniz.

Virtual Devices seçeneğine tıklanarak sanal cihaz kısmına geçilir. “New” butonu ile

oluşturulacak olan Android cihazın özellikleri seçilecektir.

Name: Android sanal cihazına vermek istediğiniz herhangi bir isim olabilir. İsmin

sadece başka bir sanal cihaz ile aynı isim olmaması önemlidir.

Target: Android versiyonunun seçileceği alandır. İstenilen cihaz seçilir. Burada dikkat

edilmesi gereken ise, bu kısımda sadece bilgisayarımızda yüklü olan Android

sürümlerinin gözüktüğüdür.

Cihaz içinde SD kart ile ilgili işlemler yapılacaksa SD kart kısmında SD kartın boyutu

girilebilir.

26

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 GPS (GLOBAL POSITIONING SYSTEM)

4.1 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

27

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.

28

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

29

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)

30

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].

Şekil 20-Binalardan bozulan sinyal Şekil 21-Atmosferden kırılan sinyal

31

Ş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ı

32

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 MARMARA GPS TAKİP SİSTEMİ(MARMARA GPS TRACKER)

5.1 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

33

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.

34

Ş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

35

Ş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.

36

Ş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

37

.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

if (l1 != null) {

_curLat = l1.getLatitude();

_curLng = l1.getLongitude();

} else {

_curLat = 0.0;

_curLng = 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.

38

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

39

Ş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.

40

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.

41

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.

Kod Parçası 6-Intent ile web sitesi görüntüleme

URI uri= Uri.parse(“http://marmara.edu.tr”));

Intent intent = new Intent(Intent.ACTION_VIEW,uri);

İntent.setData(uri);

startActivity(intent);

42

Ş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.

43

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

44

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.

45

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

Şekil 30: Marmara GPS Takip Programı

gönderim aralığı seçimi

46

Ş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.

47

Ş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.

48

<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_T5n-

NQoksbGN-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.

49

Ş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.

50

Ş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.

51

Ş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.

52

Ş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-view-

Controller(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

53

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ı

54

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.

55

5.3.3.4.3 Controller

Uygulamanın karar mekanizmasıdır. Model ile View arasında köprü görevi görür. View

katmanından gelen istekleri(request) model'e gönderir ve Model katmanından aldığı

verileri view'e aktarır. Kullanıcı controller’daki kodla ilgilenmez. Controler ile sadece

view iletişim kurar. View dan istek(request) veya cevap(response) işlemleri yapıalcağı

zaman controllera başvurulur ve view controller a bağlı olarak yönlendirilir. Güvenlik

açısından da programlama dilinin arka kısımda çalışması önerilmektedir.

5.3.3.4.4 MVC (Model-View-Controller) Kullanımının avantajları

MVC tasarım mimarisi kullanımının bazı avantajları aşağıda sıralanmıştır. [62]

Kullanıcıya sunulacak kodlar ile (Html, Css vb.) , sistemin çalışmasını sağlayan

mantıksal kodları birbirinden ayırarak temiz ve düzenli kod yazımını

kolaylaştırır.

Kodlarda daha kolay optimizasyon yapılmasına, genişletilmesine ve yeniden

kullanılmasına olanak sağlar.

Ekip olarak çalışılan projelerde görev paylaşımını ve kodların okunabilirliğini

arttırarak takım çalışmasına olanak sağlar.

Kullanıcı ara yüzünde yapılacak değişiklikler iş mantığı kısmından bağımsız

olarak yapılabilir. (Front-End Developer, Back-End Developer birbirinden

bağımsız olarak çalışabilir.)

Hata ayıklamayı ve kodu test etmeyi kolaylaştırır.

Browser adres çubuğunda kullanıcının anlayacağı şeklinde sayfalara ulaşma

imkânı sunar.

5.3.3.5 Marmara GPS Web Projesinin Tasarımı

Marmara GPS projesinin web platformunun tasarımı Microsoft firmasının Visual Studio

Professional 2012 IDE’si ile geliştirilmiştir.

Web sitesi oluşturmak için Visual Studio’nun “FileNewProject” yolu izlenerek

“ASP.NET MVC 4 Web Application” seçeneği seçilir. Açılan ekrandan “Internet

Application” seçilir ve tamam diyerek projenin ana hatları oluşturulmuş olur. Visual

Studio programcı için gerekli çoğu alanı otomatik olarak eklemektedir. İlk oluşan

projenin görüntüsü şekil 32 de gösterilmiştir.

56

Ş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.

57

Ş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.

58

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.

59

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-08-

20. 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.

60

[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 2012-

09-15.

61

[28] ^ "Notifications | Android Developers". Developer.android.com. Retrieved 2012-

09-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-02-

20.

[42] ^ PDroid – The Better Privacy Protection – xda-developers

[43] ^“Googler: Android antivirus software is scareware from sharlatans” Cnet News-

Stephen 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

62

[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-mapping-

nedir.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-avantajlari-

nelerdir./11 MVC nedir 10.04.13

[63] http://developer.android.com/reference/android/Manifest.permission.html

63

[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]