Top Banner
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
26

MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

Jan 30, 2018

Download

Documents

lamngoc
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

Page 2: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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:

Page 3: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

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 {

Page 4: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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.

Page 5: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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.

Page 6: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

Page 7: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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:

Page 8: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

LAYOUT_NEWLINE_BEFORE

LAYOUT_NEWLINE_AFTER

LAYOUT_SHRINK

LAYOUT_VSHRINK

LAYOUT_EXPAND

LAYOUT_VEXPAND

LAYOUT_2

C. TUGAS

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

Page 9: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

Page 10: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

}

}

Page 11: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

}

}

}

Page 12: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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 di-

extend 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

Page 13: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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)

Menggambar teks dalam str menggunakan

warna dan huruf yang tersedia. (x,y)

adalah koordinat titik anchor

public void drawSubstring(String str,

int offset, int len, int x, int y,int

anchor)

Sama seperti drawString, kecuali ini

hanya akan menggambar substring dari

offset (berbasis nol) dengan panjang

length.

public void drawChar(char character,

int x, int y, int anchor)

Menggambar karakter dengan warna dan

huruf yang tersedia

public void drawChars(char[] data, int

offset, int length, int x, int y, int

anchor)

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 :

Page 14: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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)

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.

public void fillArc(int x, int y, int

width, int height, int startAngle, int

arcAngle)

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 {

Page 15: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

}

}

}

Page 16: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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;

Page 17: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

private int y = getHeight()/2 - 10;

private int dx = 2;

private int dy = 2;

}

Page 18: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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.

Page 19: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

Page 20: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

}

}

}

Page 21: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

Page 22: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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(

Page 23: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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!

Page 24: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

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

Page 25: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

{

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

Page 26: MODUL PRAKTIKUM PEMROGRAMAN APLIKASI · PDF fileJURUSAN/PROGRAM STUDI TEKNISI KOMPUTER DAN JARINGAN FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2009. ... Jaringan: dua jalur, wireless

// 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!