T.C. GEBZE YÜKSEK TEKNOLOJİ ENSTİTÜSÜ Bilgisayar Mühendisliği Bölümü LOKASYON TABANLI İLAN ARAYAN MOBİL UYGULAMA Ümit YALAP Danışman Dr. Hidayet TAKÇI Mayıs, 2011 Gebze, KOCAELİ
T.C. GEBZE YÜKSEK TEKNOLOJİ ENSTİTÜSÜ Bilgisayar Mühendisliği Bölümü LOKASYON TABANLI İLAN ARAYAN MOBİL UYGULAMA Ümit YALAP Danışman Dr. Hidayet TAKÇI Mayıs, 2011 Gebze, KOCAELİ ii
Bu çalışma.../.../200.. tarihinde aşağıdaki jüri tarafından Bilgisayar Mühendisliği Bölümünde Lisans Bitirme Projesi olarak kabul edilmiştir. Bitirme Projesi Jürisi Danışman Adı Dr. Hidayet TAKÇI Üniversite Gebze Yüksek Teknoloji Enstitüsü Fakülte Bilgisayar mühendisliği Jüri Adı Üniversite Fakülte Jüri Adı Üniversite Fakülte iii
ÖNSÖZ Bu kılavuzun ilk taslaklarının hazırlanmasında emeği geçenlere, kılavuzun son halini almasında yol gösterici olan Sayın Dr. Hidayet TAKÇI hocama ve bu çalışmayı destekleyen Gebze Yüksek Teknoloji Enstitüsü ne içten teşekkürlerimi sunarım. Ayrıca eğitimim süresince bana her konuda tam destek veren aileme ve bana hayatlarıyla örnek olan tüm hocalarıma saygı ve sevgilerimi sunarım. Mayıs, 2011 Ümit YALAP iv
İÇİNDEKİLER ÖNSÖZ... İV İÇİNDEKİLER... V ŞEKİL LİSTESİ... Vİ TABLO LİSTESİ... Vİİ KISALTMA LİSTESİ... Vİİİ ÖZET... İX SUMMARY... X 1. GİRİŞ... 1 2. ANDROİD İŞLETİM SİSTEMİ... 3 2.1 AKTİVİTE...2 2.2 SERVİS.3 2.3 CONTENT PROVİDER.....3 2.4 BROADCAST RECEIVER.... 3 3.WEB SERVİS..5 4. GELIŞTIRME ORTAMININ HAZIRLANMASI..6 5. ANROID PROJESI OLUŞTURMA.7 6. JAVA ILE WEB SERVIS YAZMA.....8 7- UYGULAMANIN UML DIYAGRAMI..9 8.SONUC... 10 KAYNAKLAR..11 EKLER... 12 v
ŞEKİL LİSTESİ ŞEKİL 2.1 Android mimarisi.3 ŞEKİL 3.1 Yazilim geliştirme süreçleri ve dönüşüm işlemleri... 5 vi
TABLO LİSTESİ TABLO 3.1 Raporu Oluşturan Bölümler 3 vii
KISALTMA LİSTESİ G.Y.T.E. SDK JDK IDE OS API XML : Gebze Yüksek Teknoloji Enstitüsü : Software Development Kit : Java Development Kit : Integrated Development Environment : Operating System : Application Programming interface : Extensible StyleSheet Language viii
ÖZET Günümüzde akıllı telefonların giderek yaygınlaşmasıyla beraber, Symbian OS, Palm OS, iphone OS, Android, Windows Mobile, Blacberry OS ve Bada OS gibi birçok mobil işletim sistemleri piyasaya çıkmıştır. Bu işletim sistemlerinin birçok harici uygulamayı desteklemesi ve bu işletim sistemlerinde uygulama geliştirmenin elverişli olması sebebiyle, yeni bir ticaret ortamı oluşmuş ve bu pazar birçok programcı tarafından desteklenmiş ve halen de desteklenmeye devam etmektedir. Bu tezde, Android işletim sistemi üzerinde çalışan lokasyon tabanlı ilan arayan uygulaması yapılmıştır. Uygulama kapsamında, Android işletim sistemi birçok yönüyle incelenmiş ve Android mimarisine uygun bir uygulama yapılmıştır. Uygulama Android API level 4 ve üzeri tüm sürümlerinde çalışacak şekilde yapılmıştır. Bu uygulamayı telefonunda kullanan bir kişi, uygulamayı çalıştırdığında kendi bulunduğu konuma yakın olan kiralık-satılık ev ve dükkan ilanlarını bir harita üzerinde görebilecek ve ilanın üzerine tıkladığı zaman ilan ile ilgili detaylı bilgiye erişebilecektir. ix
SUMMARY Nowadays, with the growing expansion of smart phones, lots of mobile operating systems like Symbian OS, Palm OS, iphone OS, Android, Windows Mobile, Blacberry OS ve Bada OS came out. With supporting lots of external application and favorablity of developing application by these operating systems, exist new trading environment. The aim of this thesis is to make an search location-based advertisement which running android operating system. In this thesis, the Android operating system was examined with lots of respects. This application can run Android API level 4 and over versions. Person, who run this application in his smart phone, can see rent-sale houses and shops which near his location on a map and if he tap on advertisement, he can see details of advertisement. x
1. GİRİŞ Cep telefonları 1991 yılındaki ilk icatlarından günümüze kadar olan yirmi yıllık süreçte birçok aşama kaydetmişlerdir. İlk çıkan cep telefonlarında radyo ve kamera bulumazken, müzik çalma kapasiteleri de sınırlı idi. Zaman ilerledikçe, cep telefonlarının ilk olarak müzik çalma kapasiteleri gelişti, sonra radyo özelliği eklendi ve daha sonra da kamera eklendi. Cep telefonlarının bu gelişmesi hiçbir zaman durmadı ve her geçen saniye yeni bir özellik eklendi. Cep telefonları dünyasında çığır açan özellik ise, Symbian işletim sistemi yüklü olan cep telefonlarının çıkması oldu. Symbian işletim sistemi ile artık cep telefonlarına video oynatabilme gibi birçok özellikler eklenmişti ve en önemlisi artık cep telefonlarına harici uygulama eklenebiliyordu. Bu fırsatı çok iyi bir şekilde değerlendiren birçok yazılım firması ve programcı bu cep telefonunda çalışabilecek yeni ve farklı birçok uygulama yazmaya başladılar. Artık herkes cep telefon dünyasının tamamen değişeceğine inanıyordu ve öyle de oldu. Bu Symbian telefonun çıkmasının üzerinden çok geçmeden iphone ve BlackBerry gibi harici uygulamalara izin veren işletim sistemine sahip olan telefonlar piyasaya sürüldü. Artık bu cep telefonlarının ismi smart phone yani akıllı telefon diye telafuz ediliyordu. Çünkü yapabildikleri gerçekten çok fazlaydı. Bu akıllı telefonlar tamamen kullanıcı dostuydu ve kısa sürede çok fazla satıldı. Bu telefonların bu kadar tutulmasıyla beraber artık yeni bir pazar ortaya çıktı. Bu pazar mobil uygulama pazarıydı. Artık şirketler bu akıllı telefonlara uygulama yazmak için yarışmaya başladılar. Çünkü pazar çok büyüktü ve uygulama marketlerine konulan bir uygulama binlerce hatta milyonlarca adet indiriliyor yani satılıyordu. Bundan sonra devir akıllı telefonların devri olmaya devam etti. Google firması hiç beklemeden Linux çekirdeği üzerinde geliştirilen Android işletim sistemini 2007 yılında piyasaya sürdü. Android işletim sistemine sahip telefonların sayısı hızla arttı ve şuan iphone telefonların sayısını geçmiş durumda. Bu akıllı telefon pazarına ortak olmaya çalışan bir diğer firma Microsoft, Windows Mobile işletim sistemi ile pazara ortak oldu. Artık uygulama marketleri, firmalar için başka bir iş kapısı oldu. Öyle ki şuan iphone uygulama marketinde 300 1
binde fazla, Android markette 200 binden fazla ve Windows mobile marketinde ise 30 binden fazla uygulama var. Ve bu rakamlar her geçen gün artıyor. Google firmasının yaptığı analizlere göre 2012 yılının başlarında Android marketteki uygulama sayısı, ipone marketteki uygulama sayısını geçecek ve Android lider olacaktır. Biz de bu projede Android işletim sistemi üzerinde çalışan lokasyon tabanlı ilan arayan bir uygulama yaptık. Bu uygulama sayesinde kullanıcılar, cep telefonları ile kendi bulundukları konuma yakın olan kiralık-satılık evleri ve dükkanları harita üzerinde görebilecek ve bu ilanlar hakkında detaylı bilgiye sahip olabilecekler. Bu uygulama sayesinde kullanıcılar, sokak sokak dolaşarak ev aramak yerine oldukları yerden ilanları değerendirme fırsatı bulacaklar ve ona göre ev veya dükkan sahipleri ile konuşacaklar. 2
2. ANDROİD İŞLETİM SİSTEMİ Android: Google ve Open Handset Alliance tarafından kodlanmış Linux İşletim Sistemi tabanlı, mobil cihazlar için geliştirilmiş açık kaynak kodlu bir işletim sistemidir. Android uygulamaları java programlama diliyle yazılır ve dalvik sanal makinesi üzerinde çalışır. Uygulama uzantısı.apk'dır. Her android uygulaması ayrı bir linux processi şeklinde çalışır. Bir uygulama çalıştırılmak istendiğinde android yeni bir process oluşturur ve uygulama kapatılana kadar bu process altında çalışır. Şekil 2.1 Android mimarisi Android uygulamaları 4 temel bileşenden oluşur. Aktivite Servis Content Provider Broadcast Receiver 2.1 Aktivite: Kullanıcılarla etkileşimde olan arayüz ekranlarıdır. Bir uygulamada birçok aktivite olabilir. Örneğin bir aktivite, kullanıcıya ilan arama secenekleri gösterirken, diğer aktivite ekranda kullanıcıyı bilgilendiren bir harita ekranı gösterebilir. Oluşturulan tüm aktiviteler birbirinden bağımsız çalışır ve hepsi Activity sınıfının alt sınıflarıdır. 3
2.2 Servis: Servisler genellikle arkaplan işlerini gerçekleştirmek için kullanılan bileşenlerdir. Kullanici arayüzü bulunmaz. Örnegin bir servis, siz lokasyon tabanlı ilan arayan uygulamada iken arka planda müzik çalınmasını sağlayabilir. 2.3 Content Provider: Content povider uygulama verilerinin paylaşımlarını yönetir. Örneğin content provider bu uygulamada kullanılan lokasyon bilgilerini tutuyorsa ve gerekli izinleri almiş olan bir uygulama bu provider a erişir ve bilgileri okuma ve yazma yapabilir. 2.4 Broadcast Receiver: Broadcast mesajlara cevap veren bileşendir. Çogu broadcast sistem tarafindan oluşturulur. Örnegin bir broadcast mesaji ekranın kapatılması veya bataryanın az olduğunun bildirilmesi olabilir. 4
3. WEB SERVİS Web servisi, xml mesajlaşma tabanli bir sistem entegrasyon yöntemidir. W3C tarafindan yapilan resmi tanimiyla web servisi, bilgisayarlar arasinda ağ üzerinden etkileşimi ve uyumluluğu sağlayacak yazilim sistemidir. günümüzde birbiriyle haberleşecek sistemleri gerçeklemek için en çok tercih edilen yöntem web servisidir. Web servisi, XML tabanlı mesajlaşmayı esas alır. Bu nedenle, eski entegrasyon sistemlerinin aksine, haberleşecek sistemlerin birbirleri gerçeklenmelerinden haberdar olması veya platformlarının uyumlu olması gerekmez. Örneğin, Java ile geliştirilmiş ve UNIX sistem üzerinde çalışan bir uygulama ile.net ile geliştirilmiş ve Windows işletim sistemi üzerinde çalışan bir uygulama, birbirlerinin çalışma ortamlarından bağımsız olarak, XML iletişim standartları aracılığıyla iletişim kurabilir. Öte yandan, xml web servisleri, soap adı verilen "simple object access protocol" (basit nesne erişim protokolü) ile iletişim kurarlar. bu, web servisi erişim standartıdır. Soap protokolü sayesinde web servisleri, basit ve mesaj tabanlı bir iletişim sağlar. Şekil 3.1 yazılım geliştirme süreçleri ve dönüşüm işlemleri Web servisleri, wsdl (web service description language) adı verilen bir tanımlama dili ile sundukları servisin tanımını yaparlar. Bununla birlikte, uddi (universal description, discovery and integration) kayıt servisi sayesinde kurumlar ihtiyaç duydukları servisleri arayabilmekte veya kendi servislerini farklı kurumlar tarafından bulunabilir hale getirebilmektedir 5
4. GELIŞTIRME ORTAMININ HAZIRLANMASI Geliştirme ortamı için ilk kurulması gerekn şey Java Development Kit(JDK) kurulmasıdır.bu JDK yı http://www.oracle.com/technetwork/java/javase/downloads/index.html adresinden indirmeniz gerekmektedir. İndirdiğiniz JDK yı kurduktan sonra Android SDK sını kurmalısınız. Android SDK sını http://developer.android.com/sdk/index.html adresinden indirebilirsiniz. İndirdiğiniz.zip uzantılı dosyayı diskinizde istediğiniz bir yere açın. Benim tavsiyem C:/Android altında olmasıdır. Sonraki aşama Eclipse IDE sini kurmak. Eclipse IDE sini http://www.eclipse.org/downloads/ adresinden Eclipse IDE for Java Developer sürümünü indirebilirsiniz. Son olarak Android in Eclipse için yazmış olduğu ADT eklentisini kurmak gerek. Bunun için Eclipse IDE sini kurduktan sonra help-> install New Software seceneğini seçin ve karşınıza çıkan pencerede Add butonuna basın ve karşınıza çıkan penceredeki Name Android plugin, location kısmına da https://dlssl.google.com/android/eclipse/ yazın ve Ok tuşuna basın. Eğer bir sorun yaşarsanız https yerine http yazıp tekrar deneyin. Eclipse IDE sini yeniden başlatın ve Window->Preferences- >Android seceneğini seçin ve SDK Location kısmına kendi bilgisayarınızdaki Android SDK sının yerini gösterin. Eğer liste boşsa Window-Android SDK and AVD manager->avaliable Packages seçeneğini seçin ve istediğiniz Android sürümlerini kurun. Bu işlem internet hızınıza bağlı olarak biraz uzun olabilir. Bu işlem bittikten sonra tekrar Window->Preferences->Android seceneğini seçin ve kurulu olan Android sürümlerini görün. 6
5. ANROID PROJESI OLUŞTURMA Eclipse IDE sinde Android projesi oluşturmak için File->New->Android Project seceneği seçilir. Karşımıza çıkan pencerede projenin ismini, hangi SDK sürümünün kullanılacağı, uygulama ismi, paket ismi ve aktivite ismi yazılır ve proje oluşturulur. Oluşturulan projede, kullanılacak arayüz ekranları res/layout dizini altına konulur. Oluşturulan herbir ekrana layout eklenir. Burdaki layout secenekleri LinearLayout, RelativeLayout ve TableLayout. Bu layoutlara butonlar, etiketler, text alanları vb birçok elemanlar(widget) eklenir. Böylece uygulamada kullanılan kullanıcı arayüzleri oluşturulmuş olur. Uygulamamızda resim ekleyeceksek bu resmi drawable/ dizini altına koymamız gerekir. Uygulamada kullanılan string(katar) leri /values dizini altındaki string.xml dosyasının içine yazarız. AndroidManifest.xml dosyası içinde, uygulamamız için gerekli olan tüm izinleri, uygulamada kullanılan akriviteleri ve onların özelliklerini, content provider(içerik sağlayıcıları) ları, uygulamanıın minimum gerektirdiği özellikleri, ve uygulamanın verilerinin paylaşım izinlerini, broadcast receiver ları yani kısacası uygulamanın teknik bütün özelliklerini tanımlarız. Uygulamada kullanılan sınıfları src/ dizini altına atarız.bu sınflar genelde aktivite sınıfları olur ve layout/ dizini altında oluşturduğumuz kullanıcı arayüzlerinin altında dönen işlemlerin tanımlandığı yerdir. Bu sınıflarda layout da kullanılan widget ları ateşleyecek olan Listener ve Adapter interface leri implement edilir. Uygulamamızı build ettiğimiz zaman.apk uzantılı, Android işletim sisteminde çalışabilecek bir uygulama oluşmuş olur..apk uzantılı dosyanın içinde, AndroidManifest.xml, uygulamanın resource ları(resim, dosya gibi kaynaklar), kaynakların compile edilmiş hali ve uygulamanın java sınıflarının compile edilmiş hali olan.class dosyalarını içinde barındıran.dex uzantılı dosya bulunur. 7
6. JAVA ILE WEB SERVIS YAZMA İlk once apache tomcat application server kurulur. Tomcat server ı http://tomcat.apache.org/ adresinden indirebilirsiniz. Dynamic web projesi oluşturulur. Bunu File->New->Dynamic Wev Project seceneği yapabiliriz. Servis edilecek java sınıfı oluşturulur.project->new- >Class şeklinde oluşturulur. Web servis oluşturulur. Bunu file -> new -> web services -> web service şeçeneğini seceriz. Gelen pencereden Service Implementation kısmına daha öndecen oluşturduğumuz java sınıfını yazarız.service slider ı start slider konumuna, client Test Client konumuna getirip, alt taraftaki Monitor the Web service kutucuğunu işaretleyin Finish butonuna bastığınız zaman program otomatik olarak.wsdl uzantılı dosyaları oluşturacak ve Tomcat çalıştırılacak. Ekrana gelen web sayfasından web servis olarak ayarladığımız sınıfın fonksiyonlarını görürüz ve bunları localhost de test edebiliriz. 8
7- UYGULAMANIN UML DIYAGRAMI 9
8. SONUÇ Bu projede android işletim sistemi üzerinde çalışan ve kullanıcının bulunduğu yere yakın olan kiralık ve satılık evleri gösteren bir uygulama yapılmıştır. Uygulama Eclipse IDE si, Android SDK ve ksoap2 kütüphanesi kullanılarak gerçekleştirilmiştir. Uygulama çalıştırıldığında ilk önce ekrana kiralık ve satılık ev ara seçenekleri çıkmaktadır. Kullanıcı bu seçeneklerden birini seçebilmektedir ve kullanıcının seçimine göre uygulama, daha önceden belirlenen internet sitesindeki web servise bağlanıp ve geri dönen değerleri düzenleyip bir harita üzerinde formatlı bir şekilde göstermektedir. Ekrana gelen harita üzerinde, kullanıcının konumu ve onun bulunduğu yere yakın ilanlar işaretleyiciler ile gösterilmiştir. Harita yakınlaştırılıp, uzaklaştırılabilmektedir. Bu işaretleyiciler tıklanabilir olarak ayarlanmıştır. Kullanıcı bu işaretleyicilerden herhangi birisine tıklarsa o ilan hakkında daha detaylı bilgi gösterilmektedir. Uygulamanın Android API level 4 ve üzerinde çalışması sağlanmıştır. 10
KAYNAKLAR [1] Mark L. Murphy, The Busy Coder s Guide to Android Development, 2008 CommonsWare [2] http://developer.android.com/guide/ [3] Ed Burnette, Introducing Google s Mobile Development Platform [4] Reto Meier, Android 2 Application Development, Wiley,2010 11
EKLER A. Lisans Bitirme Projesi Konusu Bildirme Formu 12