jeni slides j2 me-10- optional package

44
Optional Package Versi 0.1 Pembangunan Aplikasi Mobile

Upload: university-of-lampung

Post on 15-May-2015

578 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Jeni slides j2 me-10- optional package

Optional Package

Versi 0.1

Pembangunan Aplikasi Mobile

Page 2: Jeni slides j2 me-10- optional package

Tujuan

• Mengetahui fungsi yang disediakan oleh Mobile Media API

• Memainkan nada sederhana

• Memainkan file audio dari jaringan atau dari JAR

• Mengirim dan menerima SMS

Page 3: Jeni slides j2 me-10- optional package

Optional Package

• Pengantar

• Mobile Media API (MMAPI)

• Wireless Messaging API (WMA)

Page 4: Jeni slides j2 me-10- optional package

Pengantar

• Tidak semua device diproduksi sama dan tiap kelas device memiliki fitur yang berbeda. Sangat sulit untuk membuat sebuah spesifikasi standar yang mencakup semua device yang telah ada.

• Untuk mengakomodasi device-device yang memiliki kemampuan berbeda, MIDP telah mendefinisikan beberapa paket tambahan. Paket tersebut dikhususkan untuk fitur yang dimiliki oleh device tertentu.

• Pada bab ini kami akan dibahas tentang cara menggunakan Mobile Media API (MMAPI) dan Wireless Messaging API (WMA)

Page 5: Jeni slides j2 me-10- optional package

Mobile Media API (MMAPI)

• Mobile Media API (MMAPI) memungkinkan kita untuk menciptakan nada, memutar serta merekam audio dan video dari device yang kompatibel.

• Pemutaran atau perekaman media ditangani oleh 2 object : DataSource dan Player

DataSource Player

Page 6: Jeni slides j2 me-10- optional package

Mobile Media API (MMAPI)

• DataSource menangani mekanisme pengambilan data dari sumber yang telah ada.

• Sumber yang ada bisa dari file JAR atau dari jaringan (via HTTP), record dari sebuah RMS, koneksi streaming dari server, atau dari sumber lain.

• Player tidak perlu mengatur tentang darimana data datang dan data mana yang diambil. Yang perlu dilakukan oleh Player adalah membaca data dari DataSource, menampilkan atau memutar media ke device output.

Page 7: Jeni slides j2 me-10- optional package

Mobile Media API (MMAPI)

• Manager menciptakan Player dari DataSource. Manager memiliki method untuk menciptakan Player dari media locator (lokasi URL), DataSource, dan InputStream

DataSource Player

Manager

Page 8: Jeni slides j2 me-10- optional package

MMAPI Properties

Key Keteranganmicroedition.media.version Versi dari MMAPI spesification yang digunakan oleh

device. Contoh : “1.1”

supports.mixing Memberikan nilai “true” jika device tersebut mendukung audio mixing, bisa memainkan paling tidak dua nada secara bersamaan, bisa mempunyai paling tidak dua Player yang memutar audio secara bersamaan dan dapat memainkan sebuah nada bahkan jika ada paling tidak satu Player yang sedang memutar audio pada saat yang sama.

supports.audio.capture Mengembalikan String “true” bila dapat melakukan audio capture, selain itu memberikan nilai “false”

supports.video.capture Mengembalikan String “true” bila dapat melakukan video capture, selain itu memberikan nilai “false”

supports.recording Mengembalikan String “true” bila dapat melakukan perekaman

Page 9: Jeni slides j2 me-10- optional package

Membuat Nada

• Memutar sebuah nada dapat dilakukan dengan cara yang sederhana, hanya dengan memanggil static method Manager.playTone(int tone, int duration, int volume).

• Nilai yang valid untuk tone adalah mulai dari 0 sampai 127.

• Durasi dari nada tersebut didefinisikan dalam satuan miliseconds.

• Parameter volume dimulai dari 0 sampai 100.

Page 10: Jeni slides j2 me-10- optional package

Audio

• Method Manager.createPlayer(String URL) membuat sebuah player yang akan memainkan data yang didapat dari URL.

• Anda juga bisa memutar media dari file JAR dengan membuat sebuah Stream dari file resource dan meneruskannya ke Manager.createPlayer().

Page 11: Jeni slides j2 me-10- optional package

Memutar Audio

player = Manager.createPlayer("http://localhost:8084/Chapter07/bong.wav");

player.realize();

// pre-fetch media untuk mengurangi keterlambatanplayer.prefetch();

VolumeControl control =(VolumeControl) player.getControl("VolumeControl");

if (control != null){control.setLevel(volumeGauge.getValue());

}

player.start();

Page 12: Jeni slides j2 me-10- optional package

Memutar Audio dari JAR

InputStream stream = getClass().getResourceAsStream("bong.wav");player = Manager.createPlayer(stream, "audio/x-wav");

player.realize(); VolumeControl control = (VolumeControl) player.getControl("VolumeControl");if (control != null){ control.setLevel(volumeGauge.getValue());} player.start();

Page 13: Jeni slides j2 me-10- optional package

Mengirim SMS

• Penggunaan Wireless Messaging API sangat mirip dengan koneksi lewat Socket dan Datagram.

• Menggunakan framework yang sama - Generic Connection Framework (GCF).

• Format koneksi URL yang digunakan adalah “sms://+621234567890”, dimana “+621234567890” merupakan nomor telepon yang akan dikirimi pesan.

Page 14: Jeni slides j2 me-10- optional package

Mengirim SMS public void sendSMS(String number, String message) throws Exception{ String url = "sms://" + number; MessageConnection connection = (MessageConnection) Connector.open(url); TextMessage msg = (TextMessage) connection.newMessage( MessageConnection.TEXT_MESSAGE ); msg.setPayloadText(message); connection.send(msg); connection.close(); }

Page 15: Jeni slides j2 me-10- optional package

NetBeans Mobility Pack

• Aplikasi wireless dapat dikembangkan dengan sangat baik pada NetBeans 4.1.

• Anda tidak perlu mengirim SMS sesungguhnya hanya untuk menguji aplikasi anda.

• NetBeans Mobility Pack dilengkapi dengan J2ME Wireless Toolkit. Toolkit ini dilengkapi dengan emulator.

• Pada toolkit ini juga terdapat tool untuk mencoba mengirim dan menerima SMS.

• Anda bisa mengatur nomor telepon (alamat) dari emulator dengan membuka WMA preferences.

Page 16: Jeni slides j2 me-10- optional package

WMA Console pada Netbeans

• Tools

• Java Platform Manager

• J2ME Wireless Toolkit 2.2

• Tools and Extensions

• Open Preferences -> WMA

• Open Utilities -> WMA: Open Console

Page 17: Jeni slides j2 me-10- optional package

WMA Console

Page 18: Jeni slides j2 me-10- optional package

Menerima SMS

• Untuk menerima SMS, buka MessageConnection yang menentukan suatu port. String protokol untuk pesan SMS adalah “sms”.

• Perintah berikut ini akan menunggu sms datang pada port 8888.

conn = (MessageConnection) Connector.open("sms://:8888");

• Kita harus meregistrasikan aplikasi agar menjadi sebuah Message Listener. Dengan demikian AMS akan memberi tahu MIDlet kita akan adanya SMS masuk.

conn.setMessageListener(this);

Page 19: Jeni slides j2 me-10- optional package

Menerima SMS

• notifyIncomingMessage akan dipanggil oleh AMS begitu ada SMS yang masuk.

• Kita perlu membuat Thread tersendiri untuk membaca pesan, sehingga Listener callback method dapat keluar dengan segera.

Page 20: Jeni slides j2 me-10- optional package

Menerima SMS

// Menunggu untuk menerima pesanMessage mesg = conn.receive();

// Menerima pesan// Check bahwa ia adalah sebuah pesan teks (bukan MMS,dsb)

if (mesg != null && mesg instanceof TextMessage) { TextMessage text = (TextMessage) mesg; addressField.setText(text.getAddress()); mesgField.setText(text.getPayloadText()); dateField.setText("" + text.getTimestamp()); statusField.setText("Message received.");}

Page 21: Jeni slides j2 me-10- optional package

Bluetooth

• Bluetooth didesain untuk menghubungkan personal device seperti ponsel dan PDA tanpa kabel dengan jarak sampai 10 meter.

• Bluetooth merupakan sebuah wireless communication protocol yang beroperasi pada gelombang 2,4 GHz.

• Menggunakan sinyal omni-directional dan dapat menembus tembok. Dapat mengirimkan data dan suara.

• Device secara otomatis akan mencari dan berkomunikasi antara satu dengan yang lain.

Page 22: Jeni slides j2 me-10- optional package

Bluetooth

• Dibagi menjadi tiga kelas berdasarkan jarak. Kelas 1 = 100 meterKelas 2 = 20 meterKelas 3 = 10 meter.

• Kecepatan 1 Mb/s.

• Dapat mengirimkan data dan suara.

• Omni-direction radio signal.

• Gelombang 2,4 GHz – 2,482 GHz.

Page 23: Jeni slides j2 me-10- optional package

Bluetooth

• Bluetooth device membentuk kelompok yang disebut piconet.

• Dalam satu piconet, terdapat satu master dan satu atau lebih slave.

• Slave dalam piconet dapat mencapai tujuh slave.

• Master unit merupakan device yang memulai komunikasi.

• Master menggunakan komunikasi point-to-multipoint.

Page 24: Jeni slides j2 me-10- optional package

Bluetooth

• Sebuah device dalam suatu piconet dapat berkomunikasi dengan device lain yang berbeda piconet.

• Sebuah slave dalam suatu piconet dapat menjadi slave dalam piconet lain.

• Sebuah master dalam piconet dapat menjadi slave dalam piconet lain.

• Komunikasi antar piconet membentuk sebuah scatternet.

Page 25: Jeni slides j2 me-10- optional package

Bluetooth

Untuk menghemat battery, bluetooth membuat tiga low power operating mode :

• Pada sniff mode, slave device listen dengan level power yang diturunkan. Pada saat ini tidak ikut berkomunikasi.

• Pada hold mode, sebuah device tidak mengirimkan data apapun tetapi tetap melakukan sinkronisasi dengan master. Device pada saat ini tidak menjadi member aktif pada piconet, tetapi meninggalkan alamat member aktif.

• Sebuah device yang dalam keadaan park mode seperti hold mode, tetapi tidak meninggalkan alamat member aktif.

Page 26: Jeni slides j2 me-10- optional package

Bluetooth

• Bluetooth profile didefinisikan untuk memastikan kemampuan beroperasi antar device dan aplikasi dari manufaktur yang berbeda.

• Sebuah profile mendefinisikan ketentuan dan kemampuan dari jenis aplikasi.

• Sebuah device hanya dapat berkomunikasi dengan device lain bila mempunyai profile yang sama.

• Semua bluetooh device arus mengimplementasikan Generic Access Profile.

• Profile ini terdiri dari connection procedure, device discovery, dan link management.

Page 27: Jeni slides j2 me-10- optional package

Bluetooth

• Service Discovery Profile menentukan fitur dan prosedur bagi sebuah aplikasi bluetooth untuk mengetahui service yang terdapat pada bluetooth device lain.

• Synchronization Profile menentukan kebutuhan bagi dua atau lebih untuk sinkronisasi data.

• Bluetooth profile lain didefinisikan dalam Bluetooth specification dan tidak akan dibahas dalam materi ini.

Page 28: Jeni slides j2 me-10- optional package

Bluetooth

• Bluetooth specification menyediakan keamanan dalam tiga cara:

– Pertama dengan lompatan frekuensi (frequency hopping). Hal ini menyulitkan penyadapan komunikasi bluetooth.

– Authentication membatasi koneksi ke device tertentu.– Encryption menggunakan kunci rahasia membuat

data tidak dapat dibaca oleh penyadap.

Page 29: Jeni slides j2 me-10- optional package

Bluetooth

Generic Access Profile membuat sebuah model keamanan yang mempunyai tiga security mode :

• Mode 1 : Operasi insecure mode. Tidak ada prosedur keamanan yang digunakan.

• Mode 2 : Service-level enforced security. Tidak ada prosedur kemanan yang digunakan sebelum jalur komunikasi dibentuk. Beberapa aplikasi mempunyai kemungkinan memiliki access policies yang berbeda.

• Mode 3 : Link-level enforced security. Prosedur keamanan digunakan sebelum link-setup selesai.

Page 30: Jeni slides j2 me-10- optional package

Bluetooth Protocol Stack

Application

Java Bluetooth APIJSR-82

OBEX

L2CAP

Host Controller Interface (HCI )

ServiceDiscovery

RFCOMM

Page 31: Jeni slides j2 me-10- optional package

Bluetooth

• Bluetooth J2ME optional package ada dalam JSR 82 yang memungkinkan anda untuk melakukan kontrol terhadap bluetooth device.

• Untuk mentransfer data antar bluetooth-enabled device, anda dapat menggunakan satu dari tiga pilihan koneksi: L2CAP, RFCOMM, dan OBEX.

• L2CAP untuk packet data

• RFCOMM merupakan sebuah layer diatas L2CAP. Digunakan untuk streaming data.

• OBEX digunakan untuk object data.

Page 32: Jeni slides j2 me-10- optional package

Bluetooth

RFCOMM:

Server terlebih dahulu mendaftarkan service• localDevice = LocalDevice.getLocalDevice();• localDevice.setDiscoverable(DiscoveryAgent.GIAC);• notifier = (StreamConnectionNotifier) Connector.open(URL);

...lalu menunggu koneksi• StreamConnection conn = notifier.acceptAndOpen();

Page 33: Jeni slides j2 me-10- optional package

Bluetooth

Client terlebih dahulu mencari device yang ada dan service yang tersedia.

LocalDevice localDevice = LocalDevice.getLocalDevice();discoveryAgent = localDevice.getDiscoveryAgent(); discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);

Client mengimplementasikan sebuah DiscoveryListener dan override method yang diperlukan agar dapat menerima notifikasi dari device. Setelah device ditemukan dan pencarian service selesai, command yang tepat akan dijalankan.

Page 34: Jeni slides j2 me-10- optional package

Location

Location-based Service:

• Location-based Service menggunakan lokasi device untuk menyediakan informasi berdasarkan lokasi.

• Pertanyaan utama yang dijawab oleh Location Based Service adalah “Dimana saya?”, untuk lebih spesifik, “Dimana device-nya?”.

Page 35: Jeni slides j2 me-10- optional package

Location

• Sebuah aplikasi yang populer dari peng-informasian lokasi adalah pengunaan ponsel oleh orang tua untuk mengetahui posisi anak mereka.

• Kegunaan lainnya adalah untuk menemukan toko atau rumah makan terdekat, mendapatkan informasi lalu-lintas dari posisi saat ini dan mendapatkan petunjuk arah untuk menuju lokasi lain.

• Penggunaan informasi lokasi untuk pengalaman bermain game yang lebih baik dan untuk aplikasi social networking merupakan sedikit contoh dari banyak kemungkinan aplikasi untuk informasi lokasi.

Page 36: Jeni slides j2 me-10- optional package

Location

• Lokasi device ditentukan menggunakan satu dari location service yang tersedia seperti Global Positioning System (GPS) atau informasi dari jaringan mobile (seperti cellular site ID).

• GPS memanfaatkan jaringan satelit yang telah ada dan dikontrol oleh Departemen Pertahanan Amerika Serikat.

• GPS dapat tidak berfungsi dalam bangunan atau hutan lebat tetapi ketelitiannya mencapai 5-30 meter.

• Informasi lokasi dari cellular site dapat digunakan jika aplikasi tidak memerlukan ketelitian yang tinggi.

• Jangkauan cell site dapat bervariasi mencapai 20 km.

Page 37: Jeni slides j2 me-10- optional package

Location

javax.microedition.location berisi kelas untuk mendapatkan informasi tentang lokasi device.

Method tersendiri digunakan untuk menentukan lokasi terminal (device), API menjamin mengembalikan nilai berikut ini:

• Latitude (Garis Lintang)• Longitude (Garis Bujut)• Akurasi dari Latitude dan Longitude.• Waktu pada saat pengukuran lokasi dilakukan.

Page 38: Jeni slides j2 me-10- optional package

Location

• Keberadaan fitur berikut ini tergantung pada method yang digunakan dalam menentukan informasi lokasi:

• Informasi altitude (ketinggian) dan ketelitiannya.• Informasi perpindahan dan kecepatan.• Informasi alamat.• Landmark proximity event• Penunjuk arah relatif ke utara dari arah device.• Informasi pitch dan roll.

Page 39: Jeni slides j2 me-10- optional package

Location

Location Provider

• Location provider merupakan sumber dari informasi lokasi.

• Aplikasi dapat memberikan kriteria (yang mungkin termasuk ketelitian) saat mendapatkan LocationProvider instance.

• Method yang mengakses lokasi informasi akan melemparkan sebuah SecurityException tidak memiliki ijin untuk mengakses informasi tersebut.

Page 40: Jeni slides j2 me-10- optional package

Location

• Location API juga dapat menyimpan informasi landmark menggunakan LandmarkStore.

• Device yang memiliki JSR 179 diperlukan untuk menyediakan paling tidak satu LandmarkStore untuk menyimpan informasi landmark.

• Sebuah landmark adalah lokasi yang telah diketahui memiliki nama yang dapat dikenali oleh user.

• Sebuah landmark juga menyimpan keterangan (text), koordinat dan informasi alamat (optional).

• Landmark direpresentasikan oleh location API dalam kelas javax.microedition.location.Landmark. Kelas ini hanya merupakan penyimpan informasi.

Page 41: Jeni slides j2 me-10- optional package

Location

• Kelas LandmarkStore berisi method untuk menyimpan, menerima dan menghapus landmark yang terdapat pada penyimpan landmark.

• Pada implementasi Location API terdapat paling tidak satu landmark store,landmark default

• Implementasi lain memungkinkan terdapat lebih dari satu landmark store, dan semua store di-share untuk semua aplikasi.

• Nama landmark diperlukan dan nama itulah yang diberikan pada end user.

• Landmark dapat ditempatkan dalam kategori kosong atau lebih. Nama kategori harus unique pada landmark store, tetapi nama landmark dapat berbeda.

Page 42: Jeni slides j2 me-10- optional package

Location

• Sebuah location listener dapat diregistrasikan oleh pada sebuah LandmarkProvider instance.

• Listener ini harus implement interface LocationListener.

• Method locationUpdate() dipanggil secara berkala oleh system berdasarkan interval yang ditentukan oleh aplikasi.

• System belum tentu memanggil method ini pada interval yang sebenarnya.

• Location provider dapat memberikan informasi yang tidak valid khususnya bila tidak dapat menentukan informasi lokasi on time.

Page 43: Jeni slides j2 me-10- optional package

Location

• Kosong atau lebih proximity listener dapat diregistrasikan dengan satu instance dari landmark provider.

• Metod proximityEvent() dari proximity listener dipanggil saat device berada dalam jangkauan registrasi koordinat.

• Proximity listener harus diregistrasikan lagi (bila diperlukan) setelah pemanggilan method karena registrasi dibatalkan setiap kali listener dipanggil.

Page 44: Jeni slides j2 me-10- optional package

Location

• Aplikasi dapat memeriksa keberadaan dan versi dari Location API dengan meminta system property dengan key “microedition.location.version”.

• Method System.getProperty() dengan key ini akan mengembalikan string versi.

• Implementasi menggunakan JSR 179 versi 1.0 akan mengembalikan string “1.0”.