Showing posts with label Mobile Programming. Show all posts
Showing posts with label Mobile Programming. Show all posts

Monday, December 12, 2011

Pengembangan Aplikasi Mobile J2ME



1.1 Tujuan
Dalam bab ini, kita akan mendiskusikan karateristik dari perangkat mobile, dan bagaimana hal
tersebut mempengaruhi pengembangan program untuk perangkat ini. Kita akan diperkenalkan
kepada Java 2 Mobile Edition (J2ME), termasuk pentingnya configuration dan profilenya.
Pada akhir bab ini, pelajar diharapkan dapat menguasai :
● Mengidentifikasi karakteristik dari perangkat mobile
● Menjelaskan arsitektur J2ME
● Mengetahui peran atau aturan configuration dan profile
● Mengidentifikasi API yang disediakan oleh MIDP
● Menjelaskan daur hidup MIDlet
1.2 Perangkat Mobile
Perangkat mobile memiliki banyak jenis dalam hal ukuran, desain dan layout, tetapi mereka
memiliki kesamaan karakteristik yang sangat berbeda dari sistem desktop.
● Ukuran yang kecil
Perangkat mobile memiliki ukuran yang kecil. Konsumen menginginkan perangkat yang
terkecil untuk kenyamanan dan mobilitas mereka.
● Memory yang terbatas
Perangkat mobile juga memiliki memory yang kecil, yaitu primary (RAM) dan secondary
(disk). Pembatasan ini adalah salah satu faktor yang mempengaruhi penulisan program
untuk berbagai jenis dari perangkat ini. Dengan pembatasan jumlah dari memory,
pertimbangan-pertimbangan khusus harus diambil untuk memelihara pemakaian dari
sumber daya yang mahal ini.
● Daya proses yang terbatas
Sistem mobile tidaklah setangguh rekan mereka yaitu desktop. Ukuran, teknologi dan
biaya adalah beberapa faktor yang mempengaruhi status dari sumber daya ini. Seperti
harddisk dan RAM, Anda dapat menemukan mereka dalam ukuran yang pas dengan
sebuah kemasan kecil.
● Mengkonsumsi daya yang rendah

Perangkat mobile menghabiskan sedikit daya dibandingkan dengan mesin desktop.
Perangkat ini harus menghemat daya karena mereka berjalan pada keadaan dimana
daya yang disediakan dibatasi oleh baterai-baterai.
● Kuat dan dapat diandalkan
Karena perangkat mobile selalu dibawa kemana saja, mereka harus cukup kuat untuk
menghadapi benturan-benturan, gerakan, dan sesekali tetesan-tetesan air.
● Konektivitas yang terbatas
Perangkat   mobile   memiliki   bandwith   rendah,   beberapa   dari   mereka   bahkan   tidak
tersambung. Kebanyakan dari mereka menggunakan koneksi wireless.
● Masa hidup yang pendek
Perangkat-perangkat konsumen ini menyala dalam hitungan detik kebanyakan dari
mereka selalu menyala. Coba ambil kasus sebuah handphone, mereka booting dalam
hitungan detik dan kebanyakan orang tidak mematikan handphone mereka bahkan
ketika malam hari. PDA akan menyala jika anda menekan tombol power mereka.

1.3 Gambaran J2ME
1.3.1 Platform JAVA
Java dibuat pada tahun 1991 oleh James Gosling. Pada awalnya diberi nama Oak, dimana
untuk menghormati pohon yang ada di luar jendela Gosling. Kemudian namanya diubah ke
Java karena telah ada sebuah bahasa yang diberi nama Oak.
Motivasi sesungguhnya dari Java adalah kebutuhan akan sebuah bahasa yang bisa digunakan
pada berbagai platform yang bisa dimasukkan ke dalam berbagai produk elektronik seperti
pemanggang   roti   dan   lemari   es.   Salah   satu   dari   proyek   pertama   yang   dikembangkan
menggunakan JAVA sebuah remote kontrol yang diberi nama Star 7.
Pada saat yang sama, World Wide Web dan Internet berkembang sangat cepat. Gosling
menyadari bahwa Java dapat digunakan untuk pemrograman Internet.
Dengan keluarnya versi 1.2, platform Java telah dipilah-pilah menjadi beberapa edisi :
The Standard Edition(J2SE), Enterprise Edition(J2EE), Mobile Edition(J2ME), dan JavaCard API.
J2SE – Java 2 Platform, Standard Edition Aplikasi Desktop
J2EE – Java 2 Platform, Enterprise Edition Aplikasi enterprise dengan fokus pada
pengembangan sisi webserver, termasuk
servlet,JSP,EJB, dan XML
J2ME – Java 2 Platform, Micro Edition Perangkat Mobile
JavaCard Smart Cards



1.3.2 Gambaran J2ME
J2ME adalah satu set spesifikasi dan teknologi yang fokus kepada perangkat konsumen.
Perangkat ini memiliki jumlah memori yang terbatas, menghabiskan sedikit daya dari baterei,
layar yang kecil dan bandwith jaringan yang rendah.
Dengan perkembangbiakan perangkat mobile konsumer dari telepon, PDA, kotak permainan ke
peralatan-peralatan   rumah,   Java   menyediakan   suatu   lingkungan   yang   portable   untuk
mengembangkan dan menjalankan aplikasi pada perangkat ini.
Program J2ME, seperti semua program JAVA adalah diterjemahkan oleh VM. Program-program
tersebut dikompile ke dalam bytecode dan diterjemahkan denga Java Virtual Machine(JVM).Ini
berarti bahwa program-program tersebut tidak berhubungan langsung dengan perangkat.
J2ME menyediakan suatu interface yang sesuai dengan perangkat. Aplikasi-aplikasi tersebut
tidak harus dikompile ulang supaya mampu dijalankan pada mesin yang berbeda.
Inti   dari   J2ME   terletak   pada   configuration   dan   profile-profile.   Suatu   configuration
menggambarkan lingkungan runtime dasar dari suatu sistem J2ME. Ia menggambarkan core
library, virtual machine, fitur keamanan dan jaringan.


2: Arsitektur J2ME
Sebuah   profile   memberikan   library   tambahan   untuk   suatu   kelas   tertentu   pada   sebuah
perangkat. profile-profile menyediakan user interface(UI) API,persistence, messaging library,
dan sebagainya.
Satu   set   library   tambahan   atau   package   tambahan   menyediakan   kemampuan   program
tambahan. Pemasukan package ini ke dalam perangkat J2ME dapat berubah-ubah karena
tergantung pada kemampuan sebuah perangkat. Sebagai contoh, beberapa perangkat MIDP
tidak memiliki Bluetooth built-in, sehingga Bluetooth API tidak disediakan dalam perangkat ini.



1.3.3 Configuration
Suatu configuration menggambarkan fitur minimal dari lingkungan lengkap Java runtime.
Untuk   menjamin   kemampuan   portabilitas   dan   interoperabilitas   optimal   diantara   berbagai
macam perangkat yang dibatasi sumber dayanya(memory, prosesor, koneksi yang dibatasi),
configuration   tidak   menggambarkan   fitur   tambahan.   Suatu   configuration   J2ME
menggambarkan suatu komplemen yang minimum dari teknologi JAVA. Adalah merupakan
tugas profile-profile untuk menggambarkan tambahan library untuk suatu kategori perangkat
tertentu.
configuration menggambarkan:
● Subset bahasa pemrograman JAVA
● Kemampuan Java Virtual Machine(JVM)
● Core platform libraries
● Fitur sekuriti dan jaringan


1.3.4 Profile
Suatu profile menggambarkan set-set tambahan dari API dan fitur untuk pasar tertentu,
kategori perangkat atau industri. Sementara configuration menggambarkan library dasar,
profile-profile menggambarkan library yang penting untuk membuat aplikasi-aplikasi efektif.
Library ini  memasukkan user interface, jaringan dan penyimpanan API.

1.4 CLDC
The Connected Limited Device Configuration (CLDC) menggambarkan dan menunjuk pada area
berikut ini:
● Fitur Bahasa Java dan Virtual Machine(VM)
● Library dasar(java.lang.*,java.util.*)
● Input/Output(java.io.*)
● Kemanan
● Jaringan
● Internationalization


1.4.1 Fitur yang hilang
Fitur tertentu dari J2SE yang dipindahkan dari CLDC adalah :
● Finalization of class instances
● Asynchronous exceptions
● Beberapa error classes
● User-defined class loaders
● Reflection
● Java Native Interface (JNI)
● Thread groups dan daemon threads
Reflection, Java Native Interface (JNI) dan user-defined class loaders potensial menjadi lubang
keamanan. JNI juga membutuhkan memory yang intensif sehingga dimungkinkan untuk tidak
mendapat dukungan dari memory rendah sebuah perangkat mobile.

1.4.2 Karakteristik perangkat CLDC
Perangkat yang diincar oleh CLDC mempunyai karateristik sebagai berikut:
● Memory minimal 192kb untuk platform Java.
● Prosesor dengan 16 atau 32 bit.
● Mengkonsumsi sedikit daya.

● Terbatas, koneksi jaringan yang sementara dengan pembatasan bandwith(biasanya
wireless).
CLDC tidak menggambarkan instalasi dan daur hidup sebuah aplikasi, antarmuka(UI) dan
penanganan peristiwa(event handling). Adalah merupakan tugas profile yang berada di bawah
CLDC untuk menggambarkan area ini. Secara khusus, spesifikasi MIDP menggambarkan daur
hidup aplikasi MIDP (MIDlet), library UI dan event handling(javax.microedition.lcdui.*).


1.4.3 Verifikasi Class
Spesifikasi CLDC memerlukan semua class untuk melewati proses verifikasi dua tingkat.
Verifikasi pertama dilaksanakan diluar perangkat sebelum instalasi pada perangkat. Verifikasi
kedua terjadi pada perangkat selama runtime dan dilaksanakan oleh KVM.




1.4.4 Generic Connection Framework
The Generic Connection Framework menyediakan API  dasar untuk koneksi dalam CLDC.
Framework ini menyediakan suatu pondasi umum untuk koneksi seperti HTTP, Socket, dan
Datagrams.GCF menyediakan suatu set API yang umum dan biasa yang memisahkan semua
jenis koneksi. Perlu dicatat bahwa tidak semua jenis koneksi dibutuhkan untuk diterapkan oleh
perangkat MIDP.
Hirarki interface yang dapat diperluas dari GFC membuat proses penyamarataan menjadi
mungkin. Jenis koneksi baru mungkin bisa ditambahkan ke dalam framework ini dengan
memperluas hirarki ini.


1.5 CDC
Connected   Device   Configuration   (CDC)   adalah   super   set   dari   CLDC.   CDC   menyediakan
lingkungan   Java   runtime   yang   lebih   luas   dibandingkan   CLDC   dan   lebih   dekat   kepada
lingkungan J2SE.


CDC Java Virtual Machine (CVM) mendukung penuh Java Virtual Machine (JVM). CDC berisi
semua API dari CLDC. CDC menyediakan suatu subset yang lebih besar dari semua class
J2SE.
Seperti CLDC, CDC tidak menggambarkan setiap class UI. Library UI digambarkan oleh profile-
profile di bawah configuration ini.
Semua class yang terdapat dalam CDC datang dari package ini:
● java.io
● java.lang
● java.lang.ref
● java.lang.math
● java.net
● java.security
● java.security.cert
● java.text
● java.util
● java.util.jar
● java.util.zip
CDC juga memasukkan di dalamnya GCF. CDC memerlukan jenis koneksi tambahan seperti file
dan dukungan datagram.

1.6 JTWI
The Java Technology for the Wireless Industry (JTWI) menetapkan satu set jasa dan spesifikasi
standar. Berdasar spesifikasi JTWI, kata kuncinya adalah “untuk memperkecil fragmentasi API
di   dalam   pasar   telepon   mobile,   dan   untuk   mengirim   spesifikasi   yang   dapat
diprediksi,spesifikasi yang jelas untuk perangkat pabrik, operator, dan pengembang aplikasi”.
Dengan penyesuaian kepada JTWI, banyak aplikasi akan berjalan di suatu set yang lebih luas
pada perangkat. Perangkat pabrik juga akan beruntung karena sebuah aplikasi yang besar
akan tersedia untuk perangkat mereka.


1.7 MIDP
The Mobile Information Device Profile (MIDP) berada di atas dari CLDC. Anda tidak bisa
menulis   aplikasi   mobile   hanya   dengan   menggunakan   CLDC   API.   Anda   harus   tetap
memanfaatkan MIDP yang mendefinisikan UI.
Spesifikasi MIDP, kebanyakan seperti CLDC dan API lainnya sudah digambarkan melalui Java
Community Process (JCP). JCP melibatkan sebuah kelompok ahli berasal dari lebih dari 50
perusahaan, yang terdiri atas pabrik perangkat mobile, pengembang software. MIDP terus
berkembang, dengan versi-versi masa depan yang telah lulus dari proses ketat JCP.
Spesifikasi   MIDP   menggambarkan   suatu   perangkat   MID   yang   memiliki   karakteristik-
karateristik ini sebagai batas minimum:
• Tampilan:
• Ukuran Layar: 96x54
• kedalaman tampilan: 1-bit
• Ketajaman pixel: sekitar 1:1
• Masukan:
• Satu atau lebih mekanisme user-input: satu keybboard, dua keyboard, atau
touch screen
• Memory:
• 256 kilobytes of non-volatile memory untuk implementasi MIDP.
• 8 kilobytes of non-volatile memory for application-created persistent data
• 128 kilobytes of volatile memory for the Java runtime (e.g., the Java heap)
• Jaringan:
• dua jalur, wireless, bandwidth terbatas
• Sound:
• Kemampuan untuk memainkan nada-nada

MIDP   menggambarkan   model   aplikasi,   UI   API,   penyimpanan   dan   jaringan   yang   kuat,
permainan dan media API, kebijakan keamanan, penyebaran aplikasi dan ketetapan over-the-
air.

1.8 MIDlet
Suatu   aplikasi   MIDP   disebut   MIDlet.   Perangkat   application   management   software   (AMS)
berinteraksi langsung dengan MIDlet dengan method MIDlet create, start, pause, dan destroy.
MIDlet adalah bagian dari package javax.microedition.midlet. Sebuah MIDlet harus di-extend
dengan class MIDlet. Dan dapat meminta parameter dari AMS seperti dirumuskan dalam
application descriptor (JAD).
Suatu MIDlet tidak harus memiliki (dan memang harus tidak mempunyai) sebuah method
public static void main(String[]  argv).Method tersebut tidak akan dikenal lagi oleh  AMS
sebagai titik awal sebuah program.


1.8.1 Siklus MIDlet
kehidupan MIDlet dimulai ketika di-instantiate oleh AMS. MIDlet pada awalnya masuk status
“Pause” setelah perintah baru dibuat. AMS memanggil constructor public tanpa argumen dari
MIDlet. Jika sebuah exception terjadi dalam constructor, MIDlet memasuki status “Destroyed”
dan membuangnya segera.
MIDlet masuk ke dalam status “Active” atas pemanggilan method startUp() oleh AMS.
MIDlet masuk ke dalam status “Destroyed” ketika AMS memanggil method destroyApp().
Status ini juga kembali diakses ketika method notifyDestroyed() kembali dengan sukses
kepada aplikasi. Dengan catatan bahwa MIDlet hanya bisa memasuki status “Destroyed”
sekali dalam masa hidupnya.




Gambar 6: Daur hidup MIDlet

1.8.2 MIDlet suites
Aplikasi-aplikasi MIDlet dibungkus  dan  dikirim kedalam perangkat  sebagai  MIDlet  suites.
Sebuah MIDlet suite terdiri dari Java Archive (JAR) dan sebuah tambahan Java Application
Descriptor (JAD).
File JAD adalah suatu file teks yang berisi satu set atribut-atribut, beberapa dibutuhkan.
1.9 Latihan
1.9.1 Apa keuntungan menggunakan java sebagai pengembangan dan
platform runtime untuk perangkat mobile?
● Aplikasi yang sangat portable
● Kaya, tergambar dengan baik menghubungkan ke perangkat
● Penggunaan memori yang rendah(KVM)
● Lingkungan runtime yang aman
● aplikasi yang dinamis















Friday, December 2, 2011

Mengenal Konsep Location Based Service (LBS)


Posted on  by oleh: Ardiansyah, M.Cs

Mungkin Anda pernah melihat di film seseorang yang bisa memantau dan mengetahui keberadaan seseorang layar monitor. Orang yang dipantau tersebut bisa disimbolkan dalam bentuk titik atau bahkan gambar dan video asli yang bergerak. Selain itu di layar monitor juga menampilkan beberapa data lengkap seperti lokasi lengkap beserta berapa jarak titik lintang dan bujurnya, di kota mana dan di negera mana orang yang dipantau tersebut berada. Kondisi lain misalnya ketika membaca status Facebook teman Anda yang tertulis kurang lebih memberitahukan bahwa teman Anda tersebut sedang berada di lokasi tertentu.
Jika kita telisik itulah sesungguhnya salah satu bentuk penerapan dari sistem dan teknologi Location Based Service (LBS) atau dalam banyak istilah disebut sebagai Layanan Berbasis Lokasi.
Jadi apakah sesungguhnya LBS itu? Ada dua definisi yang bisa dijelaskan. Definisi Pertama: LBS adalah layanan informasi yang dapat diakses menggunakan piranti mobilemelalui jaringan Internet dan seluler serta memanfaatkan kemampuan penunjuk lokasi pada piranti mobile (Virrantasu, et al, 2001). Definisi Kedua: Layanan IP nirkabel yang menggunakan informasi geografis untuk memberikan layanan informasi lokasi kepada pengguna. Beberapa layanan aplikasi yang memberikan petunjuk posisi/lokasi pirantimobile berada.
A. Komponen LBS
Terdapat empat komponen pendukung utama dalam teknologi Layanan Berbasis Lokasi, antara lain (Steiniger, et al 20):
1.      Piranti Mobile
Piranti Mobile adalah salah satu komponen penting dalam LBS. Piranti ini berfungsi sebagai alat bantu (tool) bagi pengguna untuk meminta informasi. Hasil dari informasi yang diminta dapat berupa teks, suara, gambar dan lain sebagainya. Piranti mobile yang dapat digunakan bisa berupa PDA, smartphonelaptop. Selain itu, piranti mobile dapat juga berfungsi sebagai alat navigasi di kendaraan seperti halnya alat navigasi berbasis GPS.
2.      Jaringan Komunikasi
Komponen kedua adalah jaringan komunikasi. Komponen ini berfungsi sebagai jalur penghubung yang dapat mengirimkan data-data yang dikirim oleh pengguna dari pirantimobile-nya untuk kemudian dikirimkan ke penyedia layanan dan kemudian hasil permintaan tersebut dikirimkan kembali oleh penyedia layanan kepada pengguna.
3.      Komponen Positioning (Penunjuk Posisi/Lokasi)
Setiap layanan yang diberikan oleh penyedia layanan biasanya akan berdasarkan pada posisi pengguna yang meminta layanan tersebut. Oleh karena itu diperlukan komponen yang berfungsi sebagai pengolah/pemroses yang akan menentukan posisi pengguna layanan saat itu. Posisi pengguna tersebut bisa didapatkan melalui jaringan komunikasimobile atau juga menggunakan Global Positioning System (GPS).
4.      Penyedia layanan dan aplikasi
Penyedia layanan merupakan komponen LBS yang memberikan berbagai macam layanan yang bisa digunakan oleh pengguna. Sebagai contoh ketika pengguna meminta layanan agar bisa tahu posisinya saat itu, maka aplikasi dan penyedia layanan langsung memproses permintaan tersebut, mulai dari menghitung dan menentukan posisi pengguna, menemukan rute jalan, mencari data di Yellow Pages sesuai dengan permintaan, dan masih banyak lagi yang lainnya.
5.      Penyedia data dan konten
Penyedia layanan tidak selalu menyimpan seluruh data dan informasi yang diolahnya. Karena bisa jadi berbagai macam data dan informasi yang diolah tersebut berasal dari pengembang/pihak ketiga yang memang memiliki otoritas untuk menyimpannya. Sebagai contoh basis data geografis dan lokasi bisa saja berasal dari badan-badan milik pemerintah atau juga data-data perusahaan/bisnis/industri bisa saja berasal dari Yellow Pages, maupun perusahaan penyedia data lainnya.
Secara lengkap keempat komponen pendukung LBS tersebut dapat dilihat pada gambar berikut.
Komponen pendukung utama teknologi LBS (Steiniger, et al 20)
B. Aplikasi Berbasis LBS
Berbagai macam contoh aplikasi berbasis LBS misalnya:
  1. Layanan Darurat. Contoh: E-911 dan Roadside Assistance
  2. Pelacakan (Tracking). Contoh: Commercial: workforcefleet management. Family Locator, Personal Asset Tracking
  3. Navigasi. Contoh: Direction, Planning, Assistance
  4. Tagihan. Contoh: Road TollingParking
  5. LBS Alert. Contoh: Promotion Alert, Advertising
  6. Jejaring Sosial. Contoh: Friend-Finder, Instant Messaging
  7. Aplikasi Operator Jaringan. Contoh: Location Sensitive Billing, Cellular Fraudulent Detection and Prevention, Wireless Network Optimization dan Cellular Inter-Network Border Negotiation.
  8. Aplikasi Penyedia Layanan. Contoh: Fleet Navigation and Management, Wireless M2M, Remote Access/Management Mobile Data/Television, Auto Insurance dan Promotion-Advertising
  9. Aplikasi Pengguna Akhir. Contoh: Foursquare, dll.
C. Penyedia Layanan LBS
Banyak perusahaan di dunia yang masuk menggarap layanan berbasis LBS. Beberapa di antaranya adalah (Wang, 2008):
  1. Sprint Navigation menyediakan layanan canggih yaitu memberikan panduan suara untuk para pengemudi kendaraan yang butuh petunjuk jalan dan arah beserta peta pergerakan yang berbasis tiga dimensi.
  2. Verizon Chaperone memanfaatkan telepon seluler anak-anak sebagai GPS yang akan membantu para orang tua bisa memantau dan mengetahui keberadaan anak-anak mereka. Layanan ini akan menyediakan informasi lokasi secara terus-menerus di piranti mobile orang tua.
  3. NTT DoCoMo i-Area menyediakan layanan LBS khusus para pengguna FOMA. Layanan ini meliputi security alert dan juga peningkatan efisiensi logistik bisnis.

Saturday, November 19, 2011

Location Based Service (Mobile Computing with Android)



Sub materi:
1. Pengenalan GPS
2. Pengenalan koneksi Android GPS
3. Koneksi Android dengan google map
4. Aktivasi Map API Google (windows dan Linux)


Pengenalan GPS
• GPS: Global Positioning System
• Dikembangkan oleh departemen AS dan boleh digunakan untuk sipil untuk kepentngan survey tanah


Beberapa info tentang GPS
• Nama resmi : NAVSTAR GPS (singkatan: NAVigation System with Time And Ranging Global Positioning System)
• Berbasis sistem satelit
• Untuk keperluan navigasi dan penentuan posisi
• Cakupan seluruh dunia
• Tidak tergantung cuaca. (dipengaruhi kondisi awan)
• Dapat digunakan banyak orang secara bersama
• Beroperasi terus menerus
• Dapat diketahui jarak dan informasi waktu (sehingga bisa diketahui kecepatan , arah)
• Penentuan jarak dengan reseksi (ukur jarak ke beberapa satelit)minimal 3


Sistem GPS terdiri 3 bagian
• Satelit
• Pengontrol
• Pemakai


Sistem GPS terdiri 3 bagian
• Satelit
• Pengontrol
• Pemakai


SATELIT BERTUGAS
• Terima dan simpan data yang ditransmisikan oleh  stasiun-stasiun pengontrol
• Simpan dan jaga info waktu dalam satelit yang akurat (jam atomic)
• Pancarkan secara kontinyu info pada panjang gelombang L1 & L2 yaitu : +1.75
• cm & 2.25 cm
• Info yang dipancarkan berisi: jarak, posisi, waktu, pesan-pesan yang lain (seperti
• kelayakan / kondisi satelit)


pengontrol
• Sinkronisasi waktu
• Prediksi orbit
• Injeksi data
• Monitor kesehatan satelit


PEMAKAI
Adalah berbagai risiver/penerima yang digunakan oleh Sipil / Militer (Pengamatan di darat, laut dan udara) Jenisnya :
• 1.Single Frekuensi
• 2.Double Frekuensi
Tipenya :
1.Navigasi (Trimble Pathfinder, Trimble Ensign, Magellan, Sony, Garmin)
2.Geodetik (Trimble 4000 Series, Astech, Topcon, Leica,Sokkia)
Ketelitian : Beberapa mm (secara relatif) s/d puluhan meter (secara absolut)


Penentuan Posisi dengan GPS
• Yang ditentukan koordinat 3 dimensi (X, Y dan Z) juga kesalahan waktu akibat ketidaksinkronan waktu di satelit dan risiver
• Untuk memecahkan keempat parameter tersebut minimal harus diketahui jarak dari risiver ke 4 buah satelit





Mungkinkah GPS salah?
Kurang akurat karena
1. Delay pada lapisan ionospher dan atsmosfer
2. Satelit dan clock receiver error

Diperiksa oleh control segment station
3. Multipath error
Sinyal penerima terpantul sesuatu misalnya gedung, pohon dan lain-lain
Solusi: gunakan choke ring antenna karena akan menangkap sinyal tidak langsung.
4. Dilution of Precision

5. Selective Availibility
Hanya pihak tertentu yang diperbolehkan  akses satelit GPS (misal: militer)
Kekuasaan tertinggi yang punya satelit dalam hal ini Departement Pertahanan  Amerika Serikat
(masih ingat kenapa Eropa menerapkan platform WCDMA sendiri)


Location Based Serviced
Meskipun tanpa GPS, ponsel Anda dapat  memberikan informasi tentang lokasi Anda Sebuah komputer dapat menentukan lokasi Anda berdasarkan pengukuran sinyal Anda seperti: sudut pandang sel ke menara,  berapa lama waktu sinyal yang melakukan  perjalanan ke beberapa menara dan  kekuatan sinyal ketika  anda mencapai  menara.


Koordinat pada Android
• Android menyediakan fungsi untuk  berkoneksi dengan koordinat tertentu
• Bisa menampilkan koordinat GPS



Main.xml


androidmanifest.xml


Lokasisaya.java
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

Untuk meng-capture nilai yang dihasilkan  GPS Android


Lokasisaya.java
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
Untuk meng-capture nilai yang dihasilkan GPS Android



setelah di ' SEND '



oc sekian dl ya.. ntr tnggu az selanjutnya  lgi...  ^_^ semoga bermanfaat ......




referensi:
1. http://mobiforge.com/developing/story/using-google-maps-android
2. http://blogs.itemis.de/frey/2009/04/07/location-based-services-on-android-part-2/
3. http://www.helloandroid.com/tutorials/how-make-phone-4. GPS Basic, leica Geosystem




Friday, October 21, 2011

ARSITEKTUR APLIKASI ANDROID


Tujuan Instruksional:
 Mengetahui komponen-komponen aplikasi
 Memahami siklus hidup activity
Arsitektur  aplikasi  Android  berbeda dengan  arsitektur  aplikasi  desktop.  Arsitektur  aplikasi
Android  didasarkan  atas komponen-komponen  yang  saling berhubungan  satu  dengan  yang  lain
menggunakan Intent. Intent dideskripsikan pada manifest dalam paket aplikasi.
Komponen-Komponen Aplikasi
Aplikasi Android merupakan gabungan komponen-komponen (seperti Activity, service, content
provider,  dan  broadcast  receiver)  yang  dijalankan pada Linux dan  dikelola  oleh  Android.
Komponen-komponen  tersebut  saling berbagi  resource, yang  meliputi database,  preferensi
(preference), sistem file, dan proses Linux.


Catatan :
Semua komponen tidak selalu harus ada dalam sebuah aplikasi. Sebagai contoh, sebuah aplikasi mungkin
terdiri dari Activity-activity saja, sementara aplikasi lain hanya terdiri dari Activity dan service.

Arsitektur  Android  yang  berbasis komponen memungkinkan  sebuah  aplikasi  menggunakan
ulang komponen-komponen dari  aplikasi lain yang mengizinkan penggunaan  ulang  komponen-
komponennya. Penggunaan  ulang  komponen  akan  mengurangi  keseluruhan jejak  memori yang
sangat penting  untuk perangkat  dengan  memori  terbatas. Misalkan,  kita  membuat  aplikasi
menggambar  yang  mengizinkan user  untuk  memilih  warna  dari  palette.  Maka  aplikasi
menggambar dapat  memanggil komponen  pemilih  warna dari  aplikasi  lain  yang  sesuai  dan
menggizinkan  komponen  ini  untuk  digunakan  ulang.  Aplikasi menggambar  tidak  memuat
komponen  pemilih  warna atau  bahkan  link  ke  aplikasi  lain,  melainkan  hanya  men-startup
komponen pemilih warna aplikasi lain pada saat diperlukan saja.  


Android memulai suatu proses ketika suatu komponen dari suatu aplikasi benar-benar diperlukan
(seperti  komponen  pemilih  warna), dan  menginstansiasi  objek  Java  untuk  komponen  tersebut.
Hal ini  yang  menjadi alasan mengapa aplikasi Android tidak memiliki single-entry-point (tanpa
fungsi main() seperti pada C). Aplikasi Android hanya menggunakan komponen-komponen yang
telah diinstansiasi dan menjalankannya pada saat diperlukan saja.  


Activity
Activity  merupakan  komponen  dari  suatu  aplikasi  yang  menyediakan user  interface  sehingga
user dapat berinteraksi dengan aplikasi.
Misalnya,  aplikasi  Contact  Android  memiliki activity  yang  menyediakan  user  interface  untuk
memasukkan  contact  baru,  aplikasi  Phone  memiliki activity  yang  menyediakan  user  interface
untuk dialing nomor telepon, atau aplikasi Calculator yang memiliki activity yang menyediakan
user interface untuk melakukan perhitungan-perhitungan dasar.




Gambar 1. Activity utama aplikasi Calculator


Gambar 1. di atas menunjukkan Activity utama (Main activity) dari aplikasi Calculator Android
yang memungkinkan user untuk melakukan perhitungan-perhitungan dasar[1]
.
Sebuah  aplikasi  dapat  mempunyai  lebih  dari  sebuah  activity. Sebagai  contoh,  selain  activity
untuk  melakukan  perhitungan  dasar,  Calculator  juga  memuat activity  "advance  panel"  yang
memungkinkan user untuk melakukan perhitungan akar kuadrat, mengerjakan trigonometri, dan
melakukan operasi-operasi matematika lanjut lainnya.
Dalam  program,  Activity  dideskripsikan  oleh subclass dari  class android.app.Activity,  yang
merupakan subclass tidak langsung dari class abstrak android.content.Context. Subclass-subclass
Activity  meng-override  beberapa method Activity (yang  dikenal  dengan "lifecycle  callback
method" seperti method onCreate(), onStart(), dan lain-lain) yang dipanggil oleh Android selama
Activity masih aktif (hidup).
Sebagai contoh, misal pada listring program berikut, class SimpleActivity meng-extend Activity
dan  juga  meng-override method void  onCreate(Bundle  savedInstanceState)  dan  method  void
onDestroy().
------------------------------------------------------------------------------------------------------

package gie.triana;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class AktivitasActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // always call superclass method first
        setContentView(R.layout.main);
        Log.d(tag, "pada event method onCreate(");
    }
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy(); // always call superclass method first
}
}
------------------------------------------------------------------------------------------------------------

Overriding  method  onCreate(Bundle)  dan  method  onDestroy()  pada listing  program  di  atas,
masing-masing  selalu  meng-invoke  superclassnya terlebih  dahulu,  ini  merupakan  pola  yang
harus  selalu  diikuti  pada  saat kita  meng-override  "lifecycle  callback method"  yang  lain  seperti
method-method void  onStart(),  void  onRestart(),  void  onResume(),  void  onPause(),  dan  void
onStop().

 Method  onCreate(Bundle) dipanggil  ketika  suatu  Activity  pertama  kali  dibuat.  Method
ini digunakan untuk membuat user interface dari Activity, membuat background thread,
dan  melakukan  inisialisasi  global  lainnya. Method  onCreate()  akan  melewatkan  obyek
dari  kelas  android.os.Bundle yang  berisi keadaan  (state)  Activity  sebelumya jika state
tersebut  telah  di-capture.  Android  akan  selalu  memanggil  method  onStart()  setelah
pemanggilan method onCreate(Bundle).
 Method  onStart() dipanggil  sebelum  suatu Activity menjadi  visible  (terlihat  oleh  user).
Android  memanggil  method  onResume() setelah pemanggilan onStart()  ketika  Activity
menuju ke latar depan (foreground),  dan memanggil method onStop() setelah onStart()
pada saat Activity tersembunyi (tidak terlihat oleh user).
 Method  onRestart(),  dipanggil  setelah  suatu  Activity  dalam  keadaan  berhenti  (stop),
beberapa  saat  sebelum  Activity  dimulai  lagi.  Android  akan  selalu  memanggil  onStart()
setelah pemanggilan onRestart().
 Method  onResume()  dipanggil  sebelum suatu Activity  berinteraksi  dengan  user.  Pada
titik ini, Activity memperoleh focus dan input user diarahkan ke Activity. Android akan
selalu memanggil  method  onPause()  setelah  pemanggilan  onResume(),  namun  hanya
ketika Activity harus berhenti sementara waktu (pause).

ketika Activity harus berhenti sementara waktu (pause).
 Method  onPause()  dipanggil  ketika  Android  mulai menjalankan Activity  lain.  Method
ini  digunakan  untuk  menahan  perubahan  yang  tidak  disimpan,  menghentikan  animasi
yang  mungkin  mengganggu  siklus  prosesor,  dan  sebagainya.  Method  onPause()  akan
melakukan  tugasnya  dengan cepat,  karena  Activity  selanjutnya  tidak  akan  mulai
dijalankan  sampai tugasnya selesai. Android memanggil  onResume()  setelah
pemanggilan  method  onPause() ketika  suatu  Activity  mulai  berinteraksi  dengan user,
dan memanggil onStop() pada saat Activity menjadi invisible (tidak terlihat oleh user).
 Method onStop() dipanggil ketika suatu Activity sudah tidak terlihat lagi oleh user. Hal
ini  terjadi  karena  suatu  Activity  sudah  tidak  aktif  lagi  (dimusnahkan)  atau  disebabkan
Activity lain (baik yang telah ada atau yang baru) telah dijalankan dan menutupi Activity
sebelumnya. Android memanggil onRestart() setelah pemanggilan onStop() ketika suatu
Activity  kembali  berinteraksi  dengan  user,  dan  memanggil  method  onDestroy()  pada
saat suatu Activity menghilang.
 Method onDestroy()  dipanggil  sebelum  suatu  Activity  dimusnahkan. Kalaupun  memori
memadat,  Android  hanya  akan  menghentikan  proses  dari  suatu  Activity.  Method
onDestroy() tidak akan pernah dipanggil. Jika onDestroy() dipanggil, maka akan menjadi
panggilan terakhir yang diterima Activity.        

    
Ketujuh  method  di  atas  mendefinisikan siklus  hidup  Activity  (Activity  lifecycle)  yang dapat
digambarkan seperti pada Gambar 2 berikut[1]



Gambar 2. Siklus hidup Activity (Activity lifecycle).

Untuk memahami siklus hidup Activity, lakukan percobaan berikut:
1. Menggunakan  eclipse,  buatlah  sebuah  project  Android  baru  dan  beri  nama  seperti  pada
Gambar 3. dibawah berikut :


2. Ubah file ActivitiesActivity.java, sehingga isi file terlihat seperti berikut :

------------------------------------------------------------------------------------------------------------

package gie.triana;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class AktivitasActivity extends Activity {
    String tag = "Event";
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.d(tag, "pada event method onCreate(");
    }
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.d(tag, "pada event method onDestroy()");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.d(tag, "pada event method onPause()");
}

@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.d(tag, "pada event method onRestart()");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.d(tag, "pada event method onResume()");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d(tag, "pada event method onStrat()");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.d(tag, "pada event method onStop()");
}
}





------------------------------------------------------------------------------------------------------------

Catatan : Penjelasan mengenai Log.d() dapat dilihat di :
http://developer.android.com//reference/android/util/Log.htm


3. Buka  file  AndroidManifest.xml.  Pilih  tab  Application.  Ubah  nilai Debuggable  ke  nilai  true
(lihat Gambar 4) dan save file.

      Gambar 4.
4. Tekan F11 untuk men-debug aplikasi pada emulator Android
5. Ketika Activity pertama kali di-load, pada jendela LogCat akan terlihat catatan / Log seperti 
berikut (lihat pada Gambar 5) :  
10-09 23:34:16.951: DEBUG/Kejadian(544): pada event method onCreate()
10-09 23:34:16.951: DEBUG/Kejadian(544): pada event method onStart()
10-09 23:34:16.961: DEBUG/Kejadian(544): pada event method onResume()
Membuka jendela LogCat:
Pilih  menu  Window  >  Open  perspective  >  Debug.  Maksimumkan  jendela  LogCat  hingga 
seperti Gambar 5 berikut :

                                                                           Gambar 5.
6. Pilih tombol Back pada emulator Android, Amati bahwa Log yang tercetak adalah:
10-09 23:42:02.672: DEBUG/Kejadian(544): pada event method onPause()
10-09 23:42:07.151: DEBUG/Kejadian(544): pada event method onStop()
10-09 23:42:07.151: DEBUG/Kejadian(544): pada event method onDestroy()
7. Klik  dan  tekan  tombol  Home  hingga  beberapa  saat,  klik  icon  Activities  dan  Amati bahwa 
Log yang tercetak adalah :
10-09 23:44:02.252: DEBUG/Kejadian(544): pada event method onCreate()
10-09 23:44:02.252: DEBUG/Kejadian(544): pada event method onStart()
10-09 23:44:02.262: DEBUG/Kejadian(544): pada event method onResume()
8. Tekan  tombol  Phone  pada  emulator  Android  terlihat  bahwa  Activity  didesak  ke  area 
background. Amati output jendela LogCat:
10-09 23:45:27.362: DEBUG/Kejadian(544): pada event method onPause()
10-09 23:45:42.591: DEBUG/Kejadian(544): pada event method onStop()

9. Perhatikan  bahwa  event  onDestroy  tidak  dipanggil,  menunjukkan  bahwa  Activity  masih 
berjalan dalam memori. Keluarlah dari dialer phone dengan menekan tombol Back. Activity 
sekarang terlihat lagi. Amati output pada jendela LogCat :
10-09 23:50:35.752: DEBUG/Kejadian(544): pada event method onRestart()
10-09 23:50:35.752: DEBUG/Kejadian(544): pada event method onStart()
10-09 23:50:35.762: DEBUG/Kejadian(544): pada event method onResume()
Event onRestart() sekarang dinyalakan, diikuti oleh event onStart() dan onResume(). 
Seperti  yang  kita  lihat  pada  percobaan  ini,  Activity  akan  dihentikan  (destroyed)  pada  saat  kita 
menekan tombol Back. 
Pada  saat  sebuah  activity  mulai  dijalankan,  event  onStart()  dan  onResume()  selalu  dipanggil, 
tidak terkecuali apakah activity tersebut merupakan activity yang di-restore dari background atau 
activity yang baru dibuat.

Service
Service  merupakan  komponen aplikasi  yang  beroperasi di  area  belakang  layar (background) 
untuk  periode waktu  yang  tidak  terbatas  dan  tidak  memiliki user  interface. Seperti  dengan 
activity, service berjalan dalam thread utama proses; dan pasti akan melahirkan thread lain untuk 
menjalankan  suatu  operasi yang  memerlukan banyak  waktu.  Service  diklasifikasikan  sebagai 
local atau remote service:
 Local service: berjalan pada proses yang sama sebagai penopang aplikasi. Service seperti 
ini membuat aplikasi mudah untuk melaksanakan tugas-tugas di balik layar.
 Remote  service:  berjalan  pada  proses  yang  terpisah. Service  seperti  ini  memungkinkan 
kita untuk melakukan komunikasi antar proses.
Catatan:
Service bukan merupakan suatu proses yang terpisah, walaupun service dapat  dispesifikasikan ke dalam 
proses  yang  terpisah. Service  juga  bukan  thread. Service  memungkinkan  suatu  aplikasi  memberitahu
Android  mengenai  sesuatu  yang  ingin  dilakukan di  area  background (bahkan pada  saat  pengguna tidak 
secara  langsung  berinteraksi  dengan  aplikasi),  dan memungkinkan  aplikasi  meng-expose
fungsionalitasnya untuk aplikasi lain.   
Bayangkan  service  yang  menjalankan musik  sebagai  respon  atas  pilihan  user melalui  activity.
Pengguna memilih lagu untuk dimainkan melalui activity ini, dan service segera bekerja sebagai 
respon  atas  pilihan  pengguna.  Selanjutnya  service  memainkan  musik  pada  thread  lain  untuk 
mencegah munculnya dialog box Application Not Responding.

Broadcast Receiver
Broadcast  Receiver  adalah  komponen  yang  menerima  dan  memberikan  reaksi  terhadap 
broadcast.  Kebanyakan  broadcast  bermula dari  dalam  kode  sistem.  Contohnya,  sebuah 
pemberitahuan dibuat  untuk  mengindikasikan  bahwa  timezone telah  berubah  atau  batere telah 
melemah.
Applikasi  juga  dapat  memulakan broadcast.  Contohnya  sebuah  aplikasi  mungkin  menghendaki 
aplikasi-aplikasi lain untuk mengetahui bahwa data telah selesai diunduh dari jaringan ke dalam 
perangkat dan sekarang telah tersedia untuk digunakan.  

Content Provider
Content  provider  merupakan  komponen  yang  memungkinkan data dari  suatu  aplikasi  tersedia 
bagi aplikasi lainnya.  Data  dapat tersimpan dalam  sistem file Android,  dalam  database  SQLite, 
atau  dalam  bentuk lain  yang  dapat  difahami sehingga  memungkinkan  aplikasi  untuk saling 
berbagi data dengan aplikasi lainnya.
Content  provider  melakukan  pengaksesan  raw  data secara  langsung  karena  content  provider 
men-decouple  kode  komponen dari  format  raw  data.  Pen-decouple-an  ini dimaksudkan  untuk
mencegah kerusakan kode ketika format data berubah.

Sumber: Kuliah Mobile Programing U.Tresna


 
Copyrigth by Komunitas Android UIN SGD Bandung | Bloggerized by gie_3rd - IF.CUNGUR 2009 | Pasukan Berani Malu, West,Java