MODUL PRAKTIKUM PEMROGRAMAN APLIKASI BERGERAK

dokumen-dokumen yang mirip
1. Tujuan. 2. Latar Belakang. 3. Percobaan. Modul Praktikum MMAPI. Setelah mempelajari bab ini, Pelajar diharapkan mampu untuk :

LOW LEVEL USER INTERFACE ( Tugas Pratikum 4 )

Low Level User Interface

Mobile Computing. Ramos Somya

Bab Tujuan. 2.2 Pengenalan. 2.3 "Hello, world!" MIDlet

J2ME GUI dan Manajemen Event

BONUS. Dasar Java Mobile. Mengenal Java Mobile Mengenal MIDlet Mobile Grafis Mobile Animasi Latihan Soal

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK (JAVA) PERTEMUAN 12 WIRELESS JAVA PROGRAMMING WITH JAVA 2 MICRO EDITION (J2ME)

APLIKASI VIDEO PLAYER PADA MOBILE PHONE MENGGUNAKAN PEMPROGRAMAN J2ME

11.1 Tujuan Timers

DateField adalah objek yang dapat digunakan untuk menampilkan atau mengedit objek yang bertipe Date.

PENGEMBANGAN APLIKASI MOBILE

MODUL 11 J2ME (Java 2 Micro Edition)

Agate Mobile Game Developer Camp

LAMPIRAN Listing Program

Penggunaan Canvas Pada J2ME Untuk Game Programming

1. Tujuan. 2. Latar Belakang. 3. Percobaan. Modul Praktikum TiledLayer

1.Mengatur jadwal tugas menggunakan Timers 2.Mengetahui bagaimana membaca file dari aplikasi mobile sederhana

PEMOGRAMAN APLIKASI BERGERAK (Java ME) Yoannita

PEMOGRAMAN APLIKASI BERGERAK (Java ME) Company LOGO

MODUL 9 J2ME (Java 2 Micro Edition)

IF5093 Java ME. Achmad Imam Kistijantoro Semester II 2006/2007. IF-ITB/AI/Mar 07. IF5093 Java ME

PEMOGRAMAN APLIKASI BERGERAK (Java ME)

P4 Bab 4 User Interface

APLIKASI KAMUS MATEMATIKA UNTUK HANDPHONE

Mobile Computing. Ramos Somya

MODUL 10 J2ME (Java 2 Micro Edition)

DASAR PEMROGRAMAN MOBILE DENGAN JAVA MOBILE EDITION (J2ME)

Bab Tujuan. 1.2 Perangkat Mobile

Grafis & Applet. Viska Mutiawani, M.Sc

1.Tujuan. 2. Latar Belakang. 3. Percobaan

BAB IV IMPLEMENTASI DAN PENGUJIAN. Setelah melakukan analisis dan perancangan terhadap aplikasi Iqra mobile,

BAB II KAJIAN PUSTAKA

Kode tereksekusi dengan baik sehingga mendapatkan output "JENI Java Education Network Indonesia" yang diikuti oleh "Hello Jeni"

Membuat Aplikasi Kirim SMS. Menggunakan Java J2ME

Membuat Aplikasi Nilai dengan Login. Menggunakan Java J2ME

BAB III JAVA 2 MICROEDITION (J2ME) definisi dari sun adalah sekumpulan teknologi pemrograman yang digunakan

Untuk menampilkan proses pembuatan file JAR. Untuk menentukan nama file archive (file JAR)

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

Bab 1 Pengembangan Aplikasi Mobile

I. PENDAHULUAN 1.1 Latar Belakang

Bab 4 Low Level User Interface

APLIKASI KAMUS BAHASA JEPANG - INDONESIA PADA PERANGKAT GENGGAM MENGUNAKAN J2ME

Program Kalkulator Sederhana Menggunakan Java Netbeans

Pengenalan JavaScript

Bab 6. Layer Manager

LOGIN FORM MENGGUNAKAN PROGRAM JAVA

INFORMASI DAERAH WISATA MELALUI PEMANFAATAN TEKNOLOGI MOBILE PHONE BERBASIS ANDROID

M.Octaviano Pratama

Chapter 1 Buat aplikasi kita menggunakan VisualMidlet

Bab 3 High Level User Interface

AUTHMODE_PRIVATE hanya bisa diakses oleh MIDlet suite yang menciptakan record store tersebut

Bab 2 Tinjauan Pustaka 2.1 Penelitian Terdahulu

yang signifikan. Pada tahap ini dijelaskan hal-hal apa saja yang terdapat pada

BAB IV IMPLEMENTASI DAN PENGUJIAN APLIKASI. Setelah melakukan analisis dan perancangan terhadap Aplikasii

1. Pilih BAB IV IMPLEMENTASI DAN PENGUJIAN. kebutuhan sistem yang meliputi emulator Java2 Micro Edition(J2ME) dan telepon

BAHASA PEMROGRAMAN JAVA

BAB 2 COLLECTION & THREAD

INSTRUKSI PENCABANGAN

PEMOGRAMAN APLIKASI BERGERAK (Java ME) Yoannita

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI. Istilah komputer (computer) berasal dari bahasa latin computere yang berarti

IKG2I4 / Software Project I

Rencana Pelaksanaan Pembelajaran

Pada pembuatan game di java, sering kali para programer. mendefinisikan banyak object seperti suara, gambar, dan grafik geometri yang

Graphics2D dan Geometry

SILABUS. Print to PDF without this message by purchasing novapdf ( STIKI Silabus Mata Kuliah 1/10

LAPORAN RESMI PRAKTIKUM II WEB DESAIN PENGENALAN JAVASCRIPT

Modul Pelatihan : Pembuatan Game Animasi Menggunakan Greenfoot

DASAR PEMOGRAMAN JAVA

APLIKASI MOBILE-CHATTING MENGGUNAKAN FASILITAS BLUETOOTH DENGAN J2ME

Bab Tujuan. 1.2 Perangkat Mobile

game yang dibangun lebih semakin hidup dan terasa nyata, hal ini juga yang membuat para pemain lebih tertarik, bayangkan apabila di dalam suatu

BAB 2 LANDASAN TEORI. Istilah komputer ( computer ) berasal dari bahasa latin computere yang berarti

PENGENALAN TEKNOLOGI JAVA

BAB II DASAR TEORI. menggunakan gelombang radio di atas frekuensi 1 GHz. Suatu sistem transmisi

Penggunaan Netbeans IDE, Hello World, variable dan Operator aritmetika.

LAPORAN RESMI. PRAKTIKUM TEKNOLOGI WEB Pengenalan JavaScript

BAB IV HASIL DAN UJI COBA

TUGAS PROGRAM DIAGONAL, VETIKAL, DAN HORIZONTAL OPENGL (MENGGUNAKAN JAVA) NAMA : SYIFA MUTIARA SARI KELAS : 3KA23 NPM :

PENDAHULUAN TENTANG NETBEANS

BAB IV IMPLEMENTASI DAN PENGUJIAN

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Transkripsi:

MODUL PRAKTIKUM PEMROGRAMAN APLIKASI BERGERAK Disusun Oleh: Viktor Handrianus Pranatawijaya, ST., MT. JURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009

MODUL I PEMBUATAN MIDlet A. TUJUAN Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu: Membuat MIDlet sederhana Membuat sebuah project di NetBeans Membuat sebuah MIDlet menggunakan NetBeans Mobility Pack Menjalankan MIDlet di emulator B. LANDASAN TEORI 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. The Mobile Information Device Profile (MIDP) berada di atas dari The Connected Limited Device Configuration (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 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 diextend 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. 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. C. TUGAS 1. Buatlah program TKJMidlet.java seperti di bawah ini! /* * TKJMidlet.java */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class TKJMidlet extends MIDlet implements CommandListener {

Display display; Command exitcommand = new Command("Exit", Command.EXIT, 1); Alert TPLAlert; public TKJMidlet(){ TKJAlert = new Alert( "TKJ MIDlet", "Teknisi Jaringan dan Komputer",null, AlertType.INFO); TKJAlert.setTimeout(Alert.FOREVER); TKJAlert.addCommand(exitCommand); TKJAlert.setCommandListener(this); public void startapp() { if (display == null){ display = Display.getDisplay(this); display.setcurrent(tkjalert); public void pauseapp() { public void destroyapp(boolean unconditional) { public void commandaction(command c, Displayable d){ if (c == exitcommand){ destroyapp(true); notifydestroyed(); // Exit a. Menggunakan Sun Wireless Toolkit Sekarang kita menggunakan Sun Wireless Toolkit untuk mengcompile dan memaketkan aplikasi MIDlet / MIDlet suite (mengandung satu MIDlet). Langkah 1: Buka toolbar (dari Wireless Toolkit distribution) Langkah 2: Buat sebuah project Langkah 3: Pada Setting window, anda dapat mengubah banyak pilihan-pilihan dari beberapa opsi konfigurasi untuk project Anda. Anda dapat memilih konfigurasi yang akan bekerja, package/api yang diperlukan, konfigurasi Push Registry dan yang lain. Untuk tujuan kita kali ini, kita akan menggunakan konfigurasi default project. Click "OK" untuk selesai membuat project.

Langkah 4: Copy TKJMidlet.java kedalam direktori "src": Pada jendela ini berada di direktori: C:\WTK22\apps\TKJMidlet\src (dimana C:\WTK22 adalah lokasi Anda menginstall wireless toolkit). Click "Build" dan "Run": b. Menggunakan NetBeans Mobility Pack Langkah 1: Membuat project baru Langkah 2: Memilih kategori "Mobile" Langkah 3: Memilih "Mobile Application" Langkah 4: Beri nama project dan tentukan lokasinya (Hilangkan tanda pada "Create Hello MIDlet", kita akan membuat MIDlet kita sendiri nantinya) Langkah 5: Memilih Platform (optional) Langkah 6: Membuat sebuah MIDlet baru Langkah 7: Memilih MIDP "Category" dan MIDlet "File Type" Langkah 8: Memberi nama MIDlet Langkah 9: Mengganti code yang dibuat secara otomatis dengan code program kita. Langkah 10: Mengcompile dan Menjalankan (Run) MIDlet di Emulator Langkah 11: Menjalankan MIDlet kita di Emulator 2. Buatlah program untuk menampilkan informasi mahasiswa! Informasi yang ditampilkan adalah nama, nim, tempat dan tanggal lahir, alamat, dan no telepon/hp.

MODUL II HIGH LEVEL USER INTERFACE A. TUJUAN Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu membuat MIDlets menggunakan komponen high-level UI. B. LANDASAN TEORI MDIP user interface didesain untuk peralatan mobile. Aplikasi MDIP ditunjukan pada area limited screen. Peralatan memory juga menjadi faktor penting jika perlengkapan mobile hanya memiliki kapasitas memory yang kecil. Dengan berbagai macam peralatan mobile, dari berbagai model mobile phones sampai PDAs, MIDP user interface telah didesain untuk lebih fleksibel dan mudah digunakan dalam berbagai macam peralatan ini. MIDP mempunyai class yang dapat menangani fungsi high-level dan low-level user interface. High-level UI interfaces didesain secara fleksibel. Penampilan dari komponen ini tidak didefinisikan secara spesifik. Penampilan screen yang sebenarnya dari berbagai macam komponen ini digunakan dari satu peralatan ke peralatan yang lain. Tetapi para programmer telah teryakinkan oleh kegunaan dari high-level komponen UI interfaces memiliki persamaan dalam berbagai spesifikasi-pengimplementasi secara keseluruhan. Kapan menggunakan High-Level UI Saat membangun aplikasi text-based yang mudah Saat Anda ingin aplikasi Anda dapat dengan mudah dipertukarkan dengan berbagai macam peralatan (Portabilitas) Saat Anda ingin aplikasi Anda memiliki tampilan yang sama dengan komponen UI yang lain dari berbagai peralatan Saat Anda ingin kode Anda dapat menjadi sesedikit mungkin, ketika sebuah interaksi ditangani oleh API

B.1 Display Inti dari MIDP user interfaces adalah display. Yang merupakan satu-satunya kemudahan dari Display per MIDlet. MIDlet dapat mendapatkan referensi Display object dengan menggunakan method static Display.getDisplay(), melewatkan referensi tersebut ke MIDlet instance. MIDlet dijamin dengan display object tidak akan bengubah dengan adanya eksistensi instance MIDlet. Hal ini berarti bahwa variabel dikembalikan (returned) ketika Anda memanggil getdisplay() dan tidak akan berpengaruh jika anda memenggilnya dengan startapp() atau destroyapp(). Sebuah displayable dapat memiliki nama (title), beberapa perintah(command), commandlistener dan Ticker. B.2 Screen Screen merupakan inti abstrak class yang digunakan untuk high-level UI. Berikut ini empat subclasses dari abstract class screen : Form, TextBox, List dan Alert. B.3 Item Items merupakan komponen yang dapat diletakan kedalam container, seperti Form atau Alert. Sebuah item dapat memiliki property seperti dibawah ini:

Spesifikasi layout dari item dengan Form. Direktif layout dapat dikombinasikan menggunkan bitwise atau operasi ( ). Bagaimanapun juga, beberapa direktif bersifat mutually exclusive. Berikut ini direktif horizontal alignment yang mutually exclusive: LAYOUT_LEFT LAYOUT_RIGHT LAYOUT_CENTER Berikut ini direktif vertical alignment yang juga mutually exclusive: LAYOUT_TOP LAYOUT_BOTTOM LAYOUT_VCENTER Berikut ini layout yang lain dari direktif (tidak mutually exclusive): C. TUGAS LAYOUT_NEWLINE_BEFORE LAYOUT_NEWLINE_AFTER LAYOUT_SHRINK LAYOUT_VSHRINK LAYOUT_EXPAND LAYOUT_VEXPAND LAYOUT_2 1. Buatlah program ContohForm.java seperti di bawah ini! Gambar duke.gif dapat diganti. (Catatan: Gambar duke.gif harus ada pada folder res di aplikasi MIDlet ini). import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class ContohForm extends MIDlet { private Form form; private Gauge gauge; private Spacer spacer; private ImageItem imageitem; private TextField txtfield; private DateField datefield; private StringItem stringitem; private ChoiceGroup choicegroup; public ContohForm() {

form = new Form("Biodata"); stringitem = new StringItem("NIM: ", "DBC003001"); form.append(stringitem); datefield = new DateField("Tanggal Lahir: ", DateField.DATE); form.append(datefield); txtfield = new TextField( "Nama: ", "", 50, TextField.ANY); form.append(txtfield); choicegroup = new ChoiceGroup( "Jenis Kelamin: ", Choice.EXCLUSIVE, new String[] {"Laki-laki", "Perempuan", null); form.append(choicegroup); spacer = new Spacer(20, 20); form.append(spacer); gauge = new Gauge("Langkah 1 dari 3", false, 3, 1); form.append(gauge); try { imageitem = new ImageItem( "Dibuat Oleh: ", Image.createImage("/duke.gif"), ImageItem.LAYOUT_DEFAULT, "DuKe"); form.append(imageitem); catch(exception e) { public void startapp() { Display display = Display.getDisplay(this); display.setcurrent(form); public void pauseapp() { public void destroyapp(boolean unconditional) { Tambahkan Ticker pada aplikasi ini dengan menggunakan perintah: form.setticker(new Ticker("Selamat Datang Di Informasi Mahasiswa TPL!!!")). Tambahkan command pada aplikasi ini dengan menggunakan perintah: form.addcommand(new Command("EXIT", Command.EXIT, 2)); form.addcommand(new Command("HELP", Command.HELP, 2)); form.addcommand(new Command("OK", Command.OK, 1));

form.setcommandlistener(this); public void commandaction( Command com, Displayable dis) { String label = com.getlabel(); if("exit".equals(label)) notifydestroyed(); else if("help"equals(label)) displayhelp(); else if("ok"equals(label)) processform(); public void displayhelp() { public void processform() { 2. Buatlah program ContohList.java seperti di bawah ini! import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ContohList extends MIDlet implements CommandListener { Display display; List list; Command exitcommand = new Command("Exit", Command.EXIT, 1); Command newcommand = new Command("New Item", Command.OK, 1); Command renamecommand = new Command("Rename Item", Command.OK, 1); Command deletecommand = new Command("Delete Item", Command.OK, 1); Ticker ticker = new Ticker("Contoh List"); public ListExample(){ list = new List("JEDI: List Example", List.IMPLICIT); list.append("list Item #1", null); list.append("list Item #2", null); list.append("list Item #3", null); list.setticker(ticker); list.addcommand(exitcommand); list.addcommand(newcommand); list.addcommand(renamecommand); list.addcommand(deletecommand); list.setcommandlistener(this); public void startapp() { if (display == null){ display = Display.getDisplay(this); display.setcurrent(list);

public void pauseapp() { public void destroyapp(boolean unconditional) { public void commandaction(command c, Displayable d){ if (c == exitcommand){ destroyapp(true); notifydestroyed(); // Exit if (c == List.SELECT_COMMAND){ int index = list.getselectedindex(); String currentitem = list.getstring(index);

MODUL III LOW LEVEL USER INTERFACE A. TUJUAN Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu membuat MIDlets menggunakan komponen low-level UI. B. LANDASAN TEORI Satu kelemahan ketika hanya menggunakan komponen user interface level tinggi adalah program tidak memiliki kendali penuh sebuah layar. Ada saat dimana kita ingin menggambar sebuah garis, gambar beranimasi dan mempunyai kendali untuk mengatur pixel pada layar. Kapan menggunakan Low-Level UI Saat Anda memerlukan sebuah high-level untuk mengkontrol tampilan dari suatu aplikasi Saat aplikasi Anda membutuhkan tempat yang tepat dari elemen-elemen yang ada pada screen Saat membuat game secara grafik; meskipun Anda tetap dapat menggunakan highlevel UI pada menu game, hal tersebut lebih disarankan untuk membuat menu UI Saat sebuah aplikasi membutuhkan akses ke low-level yang memiliki inputan seperti key presses Jika aplikasi Anda akan diimplementasikan pada layar navigasi Anda sendiri Pada modul ini, kita akan berhadapan langsung dengan layar. Kita akan mempelajari class Canvas, dimana akan menjadi pendukung dari proses menggambar kita. Kita juga akan menyelidiki ke dalam class Graphic, dimana memiliki metode untuk menggambar garis, kotak, sudut, dan teks. Kita juga akan membahas huruf, warna dan gambar. Canvas adalah subclass dari Displayable. Itu adalah sebuah class abstrak yang harus diextend sebelum sebuah aplikasi dapat menggunakan fungsi-fungsi yang ada. Canvas dapat digabungkan dengan subclass Displayable level tinggi yaitu Screen. Program dapat pindah ke dan dari Canvas dan Screen. Canvas menggambarkan metode-metode event handling kosong. Aplikasi harus mengesampingkan mereka untuk handle event. Class Canvas menggambarkan

sebuah metode abstrak yang disebut paint(). Aplikasi menggunakan class Canvas harus menyediakan sebuah implementasi untuk metode paint(). Sistem koordinat dari Canvas adalah berbasis nol. Koordinat x dan y dimulai dengan nol. Pojok kiri atas dari Canvas berkoordinat (0,0). Koordinat x bertambah dari kiri ke kanan. Sedangkan koordinat y bertambah dari atas ke bawah. Metode getwidth() dan getheight() mengembalikan nilai lebar dan tinggi berturut-turut. Pojok kanan bawah pada layar memiliki koordinat (getwidth()-1,getwidth()-1). Class Graphic adalah class utama untuk menulis teks, menggambar, garis, kotak dan sudut. Dia memiliki metode untuk menentukan warna, huruf, dan coretan. Class Display memiliki metode untuk menentukan apakah sebuah perangkat memiliki fasilitas yang mendukung layar berwarna atau layar monochrome pada sebuah perangkat. Sebuah huruf memiliki tiga atribut yaitu bentuk, type, dan ukuran. Huruf adalah sebuah class yang terpisah. Seperti yang dinyatakan di atas, aplikasi tidak menciptakan objek huruf. Sebagai gantinya, metode-metode statis getfont() dan getdefaultfont() digunakan untuk meminta sebuah huruf dari sistem. Teks digambar sesuai dengan sebuah anchor points. Metode drawstring() mengharap sebuah koordinat (x,y) sesuai dengan anchor points. public void drawstring(string str, int x, int y, int anchor) Metode untuk menggambar teks dan karakter adalah : public void drawstring(string str,int x, int y, int anchor) public void drawsubstring(string str, int offset, int len, int x, int y,int anchor) public void drawchar(char character, int x, int y, int anchor) public void drawchars(char[] data, int offset, int length, int x, int y, int anchor) Menggambar teks dalam str menggunakan warna dan huruf yang tersedia. (x,y) adalah koordinat titik anchor Sama seperti drawstring, kecuali ini hanya akan menggambar substring dari offset (berbasis nol) dengan panjang length. Menggambar karakter dengan warna dan huruf yang tersedia Menggambar karakter dalam data array karakter, dimulai dari indeks offset dengan panjang length Satu-satunya metode grafik untuk menggambar garis didefinisikan sebagai : public void drawline(int x1, int y1, int x2, int y2) Metode ini menggambar sebuah garis menggunakan warna yang tersedia dan coretan antara koordinat (x1,y1) dan (x2,y2). Metode grafik untuk menggambar kotak adalah :

public void drawrect(int x, int y, int width, int height) public void drawroundrect(int x, int y, int width, int height, int arcwidth, int archeight) public void fillrect(int x, int y, int width, int height) public void fillroundrect(int x, int y, int width, int height, int arcwidth, int archeight) Metode drawrect() menggambar sebuah kotak dengan pojok kiri atas pada koordinat (x,y) dan luas area (width+1 x height+1). Parameter yang sama ada bersama drawroundrect(). Parameter tambahan arcwidth dan archeight adalah diameter horisontal dan vertikal dari busur dari keempat sudut. Jika Anda akan mengenali, definisi drawrect dan drawroundrect menetapkan lebar dari kotak yang digambar pada layar adalah dengan width+1 dan tingginya dengan height+1. Hal ini sangat tidak intuitif, tetapi seperti itulah spesifikasi MIDP menggambarkan metode ini. Untuk meng-agravate tidak konsistensi dari off-byone ini, metode fillrect dan fillroundrect hanya mengisi sebuah area kotak (width x height). Anda akan melihat ketidakcocokan ini jika anda memasukkan parameter yang sama untuk drawrect dan fillrect (dan drawroundrect vs fillroundrect). Sisi kanan dan bawah dari kotak digambar oleh kepalsuan drawrect di luar area yang diisi oleh fillrect. Metode untuk menggambar bundar atau eclips adalah : public void drawarc(int x, int y,int width, int height, int startangle, int arcangle) public void fillarc(int x, int y, int width, int height, int startangle, int arcangle) Menggambar arc dengan pusat pada (x,y) dan dimensi (width+1 x height+1). Arc digambar mulai dari startangle dan extend untuk derajat arcangle. 0 derajat terletak pada jarum jam 3. Mewarnai bidang bundar dan eclips yang telah dibuat dengan warna yang tersedia. Gambar digambar dengan metode drawimage() public void drawimage(image img, int x, int y, int anchor) C. TUGAS 1. Buatlah program seperti di bawah ini! import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class TKJCanvasMIDlet extends MIDlet {

private Display display; TKJCanvas canvas; Command exitcommand = new Command("Exit", Command.EXIT, 0); public void startapp() { if (display == null){ canvas = new TKJCanvas(this, "TPL!!!"); display = Display.getDisplay(this); display.setcurrent(canvas); public void pauseapp() { public void destroyapp(boolean unconditional) { protected void Quit(){ destroyapp(true); notifydestroyed(); class TKJCanvas extends Canvas implements CommandListener { private Command exitcommand = new Command("Exit", Command.EXIT, 0); private TKJCanvasMIDlet midlet; private String text; public TKJCanvas(TKJCanvasMIDlet midlet, String text) { this.midlet = midlet; this.text = text; addcommand(exitcommand); setcommandlistener(this); protected void paint(graphics g) { g.setcolor(255, 255, 255 ); g.fillrect(0, 0, getwidth(), getheight()); g.setcolor(0, 0, 0); g.drawstring(text,getwidth()/2, getheight()/2, Graphics.TOP Graphics.HCENTER); public void commandaction(command c, Displayable d) { if (c == exitcommand){ midlet.quit();

2. Buatlah program seperti di bawah ini! import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class CanvasExample extends MIDlet { Canvas Canvasku; public ContohCanvas() { Canvasku = new CanvasKu(); public void startapp() { Display display = Display.getDisplay(this); display.setcurrent(canvasku); Canvasku.repaint(); public void pauseapp() { public void destroyapp(boolean unconditional) { class CanvasKu extends Canvas { public void paint(graphics g) { g.setcolor(0xffffff); g.fillrect(0, 0, getwidth(), getheight()); g.setcolor(0x000000); // make sure it is black g.fillrect(x, y, 20, 20); public void keypressed(int keycode) { int gameaction = getgameaction(keycode); if(gameaction == RIGHT) { x += dx; else if(gameaction == LEFT) { x -= dx; else if(gameaction == UP) { y -= dy; else if(gameaction == DOWN) { y += dy; repaint(); private int x = getwidth()/2-10;

private int y = getheight()/2-10; private int dx = 2; private int dy = 2;

MODUL IV AUDIO A. TUJUAN Modul ini bertujuan agar mahasiswa dapat menggunakan Mobile Media API 1.1 (MMAPI) untuk memanggil dan memainkan audio pada perangkat MIDP. B. LANDASAN TEORI Mobile Media API (MMAPI) memfasilitasi pembuatan nada, memainkan serta merekam audio dan video pada device yang cocok. Memainkan atau merekam sebuah media ditangani oleh dua object : DataSource dan Player. DataSource menangani detail cara mendapatkan data dari source yang tersedia. Source dapat berasal dari file JAR atau jaringan (melalui protokol HTTP), record dari RMS, streaming connection dari sebuah server atau sumber properietary lain. Player tidak perlu terlalu mempermasalahkan darimana data berasal atau bagaimana cara mendapatkannya. Player hanya perlu membaca data yang berasal dari DataSource, memproses, menampilkan dan memainkan playback media pada output device. Pihak ketiga dalam skenario ini adalah Manager. Manager membuat Player dari DataSource. Manager memiliki method untuk membuat Player dari lokasi sumber media (URL), DataSource dan InputStreams.

Anda dapat menjalankan query terhadap properties MMAPI melalui String System.getProperty(String key). Method Manager.createPlayer(String URI) memudahkan pembuatan sebuah Player yang akan memainkan data dari URI. Anda juga dapat memainkan media yang berasal dari file JAR dengan membuat Stream dari resource file dan meneruskannya pada method Manager.createPlayer() Memainkan sebuah nada cukup dilakukan dengan memanggil static method Manager.playTone(int tone, int duration, int volume). Nilai yang valid untuk nada adalah antara 0 hingga 127. Durasi dalam memainkan nada diatur dalam ukuran millisecond. Parameter volume memiliki jangkauan antara 0 hingga 100. C. TUGAS 1. Buatlah program seperti di bawah ini! import javax.microedition.lcdui.*; import javax.microedition.media.*; import javax.microedition.midlet.*; public class J2MEAllTonesPlayer extends MIDlet implements CommandListener { Form displayform = new Form("Playing all tones"); StringItem info = new StringItem("", "");

Command exit = new Command("Exit", Command.EXIT, 1); Thread runner; boolean stop = false; public void startapp() { displayform.append(info); Display.getDisplay(this).setCurrent(displayForm); displayform.addcommand(exit); displayform.setcommandlistener(this); runner = new Thread(new TonePlayer(info, this)); runner.start(); public void pauseapp() { public void destroyapp(boolean unconditional) { if (runner!= null) stop = true; public void commandaction(command cmd, Displayable disp) { destroyapp(true); notifydestroyed(); class TonePlayer implements Runnable { StringItem info; AllTonesPlayer midlet; public TonePlayer(StringItem info, AllTonesPlayer midlet) { this.info = info; this.midlet = midlet; public void run() { try { for (int i = 0; i < 128; i++) { Thread.sleep(1000); info.settext("playing: " + i); Manager.playTone(i, 500, 100); if (midlet.stop) break; catch (Exception me) { System.err.println(me);

2. Buatlah program seperti di bawah ini! import java.util.*; import javax.microedition.lcdui.*; import javax.microedition.midlet.*; import javax.microedition.media.*; public class MediaMIDlet extends MIDlet implements CommandListener, PlayerListener { private Display display; private List itemlist; private Form form; private Command stopcommand; private Command pausecommand; private Command startcommand; private Hashtable items; private Hashtable itemsinfo; private Player player; public MediaMIDlet() { display = Display.getDisplay(this); itemlist = new List("Select an item to play", List.IMPLICIT); stopcommand = new Command("Stop", Command.STOP, 1); pausecommand = new Command("Pause", Command.ITEM, 1); startcommand = new Command("Start", Command.ITEM, 1); form = new Form("Playing media"); form.addcommand(stopcommand); form.addcommand(pausecommand); form.setcommandlistener(this); items = new Hashtable(); itemsinfo = new Hashtable(); //file *.wav dapat diubah items.put("siren from jar", "file://siren.wav"); itemsinfo.put("siren from jar", "audio/x-wav"); public void startapp() { for(enumeration en = items.keys(); en.hasmoreelements();) { itemlist.append((string)en.nextelement(), null); itemlist.setcommandlistener(this);

display.setcurrent(itemlist); public void pauseapp() { try { if(player!= null) player.stop(); catch(exception e) { public void destroyapp(boolean unconditional) { if(player!= null) player.close(); // close the player public void commandaction(command command, Displayable disp) { if(disp instanceof List) { List list = ((List)disp); String key = list.getstring(list.getselectedindex()); try { playmedia((string)items.get(key), key); catch (Exception e) { System.err.println("Unable to play: " + e); e.printstacktrace(); else if(disp instanceof Form) { try { if(command == stopcommand) { player.close(); display.setcurrent(itemlist); form.removecommand(startcommand); form.addcommand(pausecommand); else if(command == pausecommand) { player.stop(); form.removecommand(pausecommand); form.addcommand(startcommand); else if(command == startcommand) { player.start(); form.removecommand(startcommand); form.addcommand(pausecommand); catch(exception e) { System.err.println(e); String file = locator.substring(

locator.indexof("file://") + 6, locator.length()); player = Manager.createPlayer( getclass().getresourceasstream(file), (String)itemsInfo.get(key)); player.addplayerlistener(this); player.setloopcount(-1); player.prefetch(); player.realize(); player.start(); if(event.equals(playerlistener.started) && new Long(0L).equals((Long)eventData)) { display.setcurrent(form); else if(event.equals(playerlistener.closed)) { form.deleteall(); Tambahkan list lagu pada aplikasi ini!

MODUL V VIDEO A. TUJUAN Modul ini bertujuan agar mahasiswa dapat menggunakan Mobile Media API 1.1 (MMAPI) untuk memanggil dan memainkan video pada perangkat MIDP. B. LANDASAN TEORI Selain audio, video merupakan media primer yang harus dimainkan. Agar MediaMIDlet dapat memainkan video, perubahan yang diperlukan yang harus dibuat adalah pada method playerupdate(), untuk membuat layar video. Perubahan yang memungkinkan file video dimainkan dengan MediaMIDlet juga. Jika method ditentukan memiliki VideoControl, hal tersebut ditunjukkan dengan membuat GUI untuk itu. GUI tersebut kemudian ditambahkan padaform. Dan tentu saja, diperlukan file video ditambahkan pada list shingga dapat dites. Hal yang harus diingat adalah tidak semua mobile phones dapat memainkan semua file video. Untuk melihat list video yang didukung oleh alat tersebut adalahdengan menggunakan method Manager.getSupportedContentTypes(null). C. TUGAS 1. Buatlah program seperti di bawah ini! import java.io.inputstream; import javax.microedition.lcdui.*; import javax.microedition.media.*; import javax.microedition.midlet.*; public class VideoMIDlet extends MIDlet implements CommandListener, Runnable

{ private Display mdisplay; private Form mmainscreen; private Item mvideoitem; private VideoControl mvidc; private Command mplaycommand; private Player mplayer = null; public void startapp() { mdisplay = Display.getDisplay(this); if (mmainscreen == null) { mmainscreen = new Form("Video MIDlet"); mmainscreen.addcommand(new Command("Exit", Command.EXIT, 0)); mplaycommand = new Command("Play", Command.SCREEN, 0); mmainscreen.addcommand(mplaycommand); mmainscreen.setcommandlistener(this); mdisplay.setcurrent(mmainscreen); public void pauseapp() { public void destroyapp(boolean unconditional) { if (mplayer!= null) { mplayer.close(); public void commandaction(command c, Displayable s) { if (c.getcommandtype() == Command.EXIT) { destroyapp(true); notifydestroyed(); else { Form waitform = new Form("Loading..."); mdisplay.setcurrent(waitform); Thread t = new Thread(this); t.start(); public void run() { playfromresource(); private void playfromresource() { try { InputStream in = getclass().getresourceasstream("/f.mpg"); mplayer = Manager.createPlayer(in, "c");

// player.start(); mplayer.realize(); if ((mvidc = (VideoControl) mplayer.getcontrol("videocontrol"))!= null ) { mvideoitem = (Item) mvidc.initdisplaymode(videocontrol.use_gui_primit IVE, null); mmainscreen.append(mvideoitem); mplayer.start(); mmainscreen.removecommand(mplaycommand); mdisplay.setcurrent(mmainscreen); catch (Exception e) { showexception(e); return; private void showexception(exception e) { Alert a = new Alert("Exception", e.tostring(), null, null); a.settimeout(alert.forever); mdisplay.setcurrent(a, mmainscreen); Tambahkan list video pada aplikasi ini!