Wednesday, June 21, 2006

J2ME Location Based Services(LBS)

Chandra Kurniawan
203114808

J2ME Location Based Services(LBS)

Location-based services (LBS) menyediakan mobile devices yang dapat melihat lokasi tempat sekarang.
Hal ini membuat pihak pasar mengembangkan pelayanan ini. Dengan adanya pelayanan ini, dapat diketahui kondisi lalu lintas sekarang, menemukan lokasi restoran terdekat dengan posisi kita, menyediakan rute terdekat yang dapat ditempuh menuju ke suatu tempat, dan banyak lagi yang lain.

Artikel ini akan memperkenalkan LBS dan API untuk J2ME(JSR 179), dimana ini dapat digunakan untuk mengembangkan LBS.

LBS ini akan menjawab pertanyaan-pertanyaan seperti dimanakah saya? apa yang ada disekeliling saya? bagaimana saya dapat kesana?

LBS akan menentukan lokasi tempat kita berada dan informasi lain untuk aplikasi dan pelayanan yang ada.
Seperti contoh 911 akan mendapatkan posisi penelepon secara otomatis. Pelayanan ini akan berguna untuk orang yang bepergian jauh dan tidak mengetahui lokasi-lokasi yang ada karena ada pelayanan map dari tempat yang bersangkutan.

Ada 2 cara untuk mengimplementasikan LBS, yaitu:
1. Memproses lokasi data di server dan mengirim hasilnya ke mobile device
2. Mendapatkan data untuk aplikasinya, jadi langsung dapat digunakan.

Untuk menemukan lokasinya, LBS harus menggunakan metode posisi real-time. Ketepatan tergantung dari metode yang digunakan.

Aplikasi dapat menggunakan beberapa metode di bawah ini:
- Menggunakan jaringan dari mobile phone tersebut.
Id dapat didapatkan dengan mengidentifikasikan pada BTS terdekat.
- Menggunakan satelit
GPS dikontrol oleh US Department of Defense(US DOD), menggunakan 24 satelit yang mengorbit di bumi.
GPS menentukan lokasinya dengan menghitung perbedaan signal waktu dari satelit berbeda untuk mencapai ke receiver. GPS signal diencode, jadi harus memiliki GPS receiver. Sementara ini GPS merupakan metode yang paling akurat, tetapi biayanya cukup mahal dan baterai yang digunakan cepta habis, memerlukan waktu untuk melakukan persiapan awal deengan satelit yang tampak
- Menggunakan short-range positioning (Mis: Bluetooth)
Hal ini dapat dilakukan di satu bangunan, sebuah LAN dapat menyediakan lokasi sekarang.

Terkadang posisi akurat diperlukan, terkadang juga tidak. Misalnya lokasi untuk wisata turis tidak terlalu penting tetapi akan penting jika digunakan untuk sistem keamanan.

LBS di J2ME dapat ditemukan di javax.microedition.location. Ini memungkinkan pengembang untuk membuat lokasi yang ada di dalam aplikasi dan dapat digabungkan dengan lokasi yang lain. Misalnya disimpan di database yang dikenal sebagai Landmark.

JSR 179 menggunakan Connected Device Configuration (CDC) atau versi 1.1 Connected Limited Device Configuration (CLDC).

Platform hardware menentukan metode penentuan lokasi yang disupport. Jika tidak mensupport satu provider, LBS tidak akan mungkin digunakan. Aplikasi dapat meminta provider data dengan karakteristik tertentu, misalnya sudut akurasi minimum. Kadang penggunaan pelayanan ini tidak memungut biaya, tetapi bisa juga dipungut biaya.

Dalam penerimaan data selain ketepatan posisi ada beberapa hal yang harus diperhatikan seperti waktu response, masalah ketinggian dan kecepatan. Sekali kita terhubung dengan pihak Location Provider, kita akan ditawarkan metode untuk verifikasi data, misalnya:
- Kita mendapat data lokasi tertentu secara teratur.
- Mendapatkan update lokasi kita sekarang yang ditentukan oleh interval aplikasi.

Location merupakan kelas abstrak yang dapat digunakan. Kelas ini mengandung koordinat, kecepatan dan waktu ketika kita melakukan pengukuran data. Koordinat direpresentasikan ke dalam 2 kelas, yaitu:
- Koordinat merepresentasikan latitude dan longitude di dalam sudut dan ketinggian dalam satuan meter
- Object QualifiedCoordinates mengandung latitude, longitude, dan altitude, dan juga ada indikasi akurasi yang direpresentasikan sebagai radius dari area

Di bawah ini ada potongan program bagaimana cara untuk mendapatkan lokasi saat ini dari peralatan secara teratur:

...
// criteria untuk memilih lokasi provider
// akurasi sekitar 500 meter secara horizontal
Criteria cr= new Criteria();
cr.setHorizontalAccuracy(500);

// Mendapatkan object dari provider
LocationProvider lp= LocationProvider.getInstance(cr);

// Meminta lokasi, menyetting timeoutnya 1 menit
Location l = lp.getLocation(60);
Coordinates c = l.getQualifiedCoordinates();

if(c != null ) {
// Menggunakan koordinatnya
double lat = c.getLatitude();
double lon = c.getLongitude();
}
...

Landmark adalah lokasi yang berhubungan dengan nama dan deskripsi. Landmark dapat disimpan di database device, dimana dapat dishare dengan semua aplikasi J2ME. Landmark dapa menyimpan lokasi yang sering dikunjungi. Dimana direpresentasikan sebagai instance Landmark dan database LandmarkStore.

Jika peralatan menggunakan kompas, aplikasi dapat ditentukan tidak hanya lokasinya tetapi juga orientasinya, dimaana aplikasi navigasi akan sangat berguna. Kelas Orientation merepresentasikan sudut yang dapat dirubah menjadi arah kompas.

Mengakses GPS receiver menggunakan Bluetooth

Langkah-langkahnya:
- Mendapatkan koneksi

...
// dimana url diisi alamat peralatan bluetooth
String url = "btspp://0002c727fc56:1";
javax.microedition.io.StreamConnection connection = (StreamConnection) Connector.open(url, Connector.READ);
java.io.InputStreamReader reader = new InputStreamReader(connection.openInputStream())
...

- Membaca data

...
String output;
int input;
while ((input = reader.read()) != 13)
output += (char) input;
output = output.substring(1, output.length() - 1);
...

- Memproses data
Setiap baris dibaca sebagai record yang didefinisikan di protokol NMEA-0183 dan dapat diproses lebih jauh

Source:
http://www.kowoma.de/gps/zusatzerklaerungen/NMEA.htm
http://www.microjava.com/articles/Bluetooth-jsr-82-training.pdf
http://developers.sun.com/techtopics/mobility/apis/articles/location/

No comments: