jeni slides j2 me-10- optional package

Post on 15-May-2015

578 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Optional Package

Versi 0.1

Pembangunan Aplikasi Mobile

Tujuan

• Mengetahui fungsi yang disediakan oleh Mobile Media API

• Memainkan nada sederhana

• Memainkan file audio dari jaringan atau dari JAR

• Mengirim dan menerima SMS

Optional Package

• Pengantar

• Mobile Media API (MMAPI)

• Wireless Messaging API (WMA)

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)

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

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.

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

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

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.

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().

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();

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();

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.

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(); }

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.

WMA Console pada Netbeans

• Tools

• Java Platform Manager

• J2ME Wireless Toolkit 2.2

• Tools and Extensions

• Open Preferences -> WMA

• Open Utilities -> WMA: Open Console

WMA Console

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);

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.

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.");}

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.

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.

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.

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.

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.

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.

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.

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.

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.

Bluetooth Protocol Stack

Application

Java Bluetooth APIJSR-82

OBEX

L2CAP

Host Controller Interface (HCI )

ServiceDiscovery

RFCOMM

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.

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();

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.

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?”.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

top related