praktikum java mobile

32
Laboratorium FKOM-UNIKU Erlan Darmawan, S.Kom., M.Si PEMBUATAN MIDlet I. TUJUAN - Mahasiswa mampu membuat MIDlet Sederhana - Mahasiswa memahami Siklus hidup MIDlet - Mahasiswa mampu membuat dan menjalankan aplikasi - Mahasiswa mampu melakukan setting konfigurasi pada aplikasi J2ME II. LANDASAN TEORI J2ME merupakan Kombinasi yang terbentuk antara sekumpulan interface java yang sering disebut dengan java API (Application Programming Interface) dengan JVM yang di desain khusus untuk alat. Kombinasi tersebut kemudian digunakan untuk pembuatan aplikasi-aplikasi yang dapat berjalan di atas alat(mobile device) J2ME merupakan bagian dari J2SE, sehingga tidak semua library yang ada pada J2SE dapat digunakan pada J2ME. Tetapi J2ME memiliki beberapa library khusus yang tidak dimiliki J2SE Midlet : Sebutan untuk aplikasi-aplikasi yang dibuat di dalam handphone dengan menggunakan profil MIDP Aplikasi Midlet : bagian dari kelas javax.microedition.midlet.MIDlet yang didefinisikan pada MIDP Midlet berupa sebuah kelas abstrak yang merupakan subkelas dari bentuk dasar aplikasi sehingga antarmuka antara aplikasi J2ME dan aplikasi manajemen pada perangkat dapat terbentuk. III. PRAKTEK 1. Jalankan J2ME Wirelgess Toolkit, yaitu dengan memilih menu Start Programs J2ME Wireless Toolkit 2.2 Ktoolbar pada gambar 1.1

Upload: iimnaim

Post on 13-Apr-2015

106 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

PEMBUATAN MIDlet

I. TUJUAN

- Mahasiswa mampu membuat MIDlet Sederhana

- Mahasiswa memahami Siklus hidup MIDlet

- Mahasiswa mampu membuat dan menjalankan aplikasi

- Mahasiswa mampu melakukan setting konfigurasi pada aplikasi J2ME

II. LANDASAN TEORI

J2ME merupakan Kombinasi yang terbentuk antara sekumpulan interface java

yang sering disebut dengan java API (Application Programming Interface) dengan

JVM yang di desain khusus untuk alat. Kombinasi tersebut kemudian digunakan

untuk pembuatan aplikasi-aplikasi yang dapat berjalan di atas alat(mobile device)

J2ME merupakan bagian dari J2SE, sehingga tidak semua library yang ada

pada J2SE dapat digunakan pada J2ME. Tetapi J2ME memiliki beberapa library

khusus yang tidak dimiliki J2SE

Midlet : Sebutan untuk aplikasi-aplikasi yang dibuat di dalam handphone

dengan menggunakan profil MIDP

Aplikasi Midlet : bagian dari kelas javax.microedition.midlet.MIDlet yang

didefinisikan pada MIDP

Midlet berupa sebuah kelas abstrak yang merupakan subkelas dari bentuk dasar

aplikasi sehingga antarmuka antara aplikasi J2ME dan aplikasi manajemen pada

perangkat dapat terbentuk.

III. PRAKTEK

1. Jalankan J2ME Wirelgess Toolkit, yaitu dengan memilih menu Start –

Programs – J2ME Wireless Toolkit 2.2 – Ktoolbar pada gambar 1.1

Page 2: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

2. Setelah itu muncul jendela J2ME Wireless Toolkit

3. Buat sebuah projek baru dengan memilih menu File | New Project , sehingga

akan muncul kotak dialog untuk melakukan input nama project dan nama kelas

dari MIDlet yang akan dibuat. Isi nama projek dengan PraktikumI dan nama

class MIDlet HelloMIDlet

4. Pilih tombol Create Project , dan lakukan setting dari project yang akan dibuat

pada form yang ditampilkan. (sementara gunakan defaultnya)

Page 3: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

5. Klik OK untuk mengakhiri dan akan tampil pesan berikut

6. Sampai disini J2ME Wireless Toolkit akan menyimpan project tersebut

kedalam direktori PraktikumI dan ditempatkan di dalam direktori

C:\WTK22\apps\PraktikumI.

Page 4: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

7. Ketik Sintak berikut ini di editor (notepad, net beans, atau jcreator)

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class HelloMIDlet extends MIDlet {

// deklarasi variabel bertipe Display yang bersifat private

private Display display;

// mendefinisikan constructor

public HelloMIDlet() {

display = Display.getDisplay(this);

}

public void startApp() {

TextBox tb =

new TextBox("Hello MIDlet", "Hello J2ME Salam Kenal...!", 256, 0);

display.setCurrent(tb);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

} }

8. Simpan dengan nama HelloMIDlet.java di C:\WTK22\apps\PraktikumI\src

9. Lakukan kompilasi terhadap file HelloMIDlet.java dengan memilih menu

Project | Build pada KToolbar. Perhatikan Apa yang terjadi?

10. Jalankan Aplikasi dengan memilih menu Project | Run. Perhatikan Output

yang terjadi

11. Untuk menjalankan MIDlet yang telah dibuat klik tombol dibawah tulisan

Launch pada emulator. Perhatikan apa yang terjadi

IV. TUGAS

Buat program untuk menampilkan biodata Anda mulai dari NIM, NAMA, KELAS,

PRODI, FAKULTAS, IPK, HOBBY, MOTTO

(Kerjakan di Lab, manfaatkan waktu sebaik mungkin, berkreasilah jangan merasa

cukup dengan apa yang didapat pada praktikum ini Semangat )

Page 5: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

Command dan CommandListener

I. TUJUAN

- Mahasiswa mampu membuat program yang menyediakan komponen untuk

interaksi user

- Mahasiswa memahami komponen interaksi user dengan menggunakan kelas

Command dan interface CommandListener

II. LANDASAN TEORI

Menurut definisninya kelas Command adalah sebuah konstruksi yang

membungkus semua hal-hal atau informasi-informasi yang berkaitan dengan

sebuah aksi. Perilaku dari aksi itu sendiri tidak dibungkus di dalam objek

Command , melainkan harus didefinisikan secara explicit melalui method

commandAction(), yaitu method yang harus didefinisikan pada saat kita

mengimplementasikan interface CommandListener. Ini artinya, objek Command

hanya berisi informasi tentang perintah , bukanlah sebuah aksi actual yang terjadi

pada saat objek Command di aktivasi. Aksi – aksi yang telah didefinisikan pada

interface CommandListener kemudian akan diasosiasikan dengan layar aktif

sehingga objek-objek Command yang terdapat pada layar tersebut dapat diaktivasi

sesuai dengan kebutuhannya.

III. PRAKTEK

1. Buat program dengan nama class midlet HelloMIDlet2.java dan nama projek

praktikum21 seperti dibawah ini

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class HelloMIDlet2 extends MIDlet

implements CommandListener {

// deklarasi variabel bertipe Display yang bersifat private

private Display display;

// deklarasi variabel bertipe Command

Page 6: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

private Command cmdKeluar;

// mendefinisikan constructor

public HelloMIDlet2() {

display = Display.getDisplay(this);

}

public void startApp() {

// instansiasi objek TextBox

TextBox tb =

new TextBox("Hello MIDlet", "Hello Salam Kenal MIDlet...!", 256, 0);

// instansiasi objek Command

cmdKeluar = new Command("Keluar", Command.EXIT, 1);

// menambahkan objek Command ke TextBox

tb.addCommand(cmdKeluar);

// mengeset CommandListener dari objek TextBox

tb.setCommandListener(this);

display.setCurrent(tb);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

public void commandAction(Command c, Displayable s) {

if (c == cmdKeluar) {

destroyApp(false);

notifyDestroyed();

}

}

}

2. Buat program dengan nama class midlet TestMIDlet.java seperti dibawah ini

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class TestMIDlet extends MIDlet {

private Display display;

private Command cmdKeluar;

private Command cmdHello;

private TextBox tb;

private CommandListener listener;

// mendefinisikan constructor

public TestMIDlet() {

display = Display.getDisplay(this);

}

public void startApp() {

Page 7: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

tb = new TextBox("CommandListener", null, 256, 0);

cmdKeluar = new Command("Keluar", Command.EXIT, 1);

tb.addCommand(cmdKeluar);

cmdHello = new Command("Hello", Command.SCREEN, 1);

tb.addCommand(cmdHello);

// mengeset CommandListener dari objek TextBox

listener = (CommandListener) new ContohListener();

tb.setCommandListener(listener);

display.setCurrent(tb);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

// mendeklarasikan inner class

class ContohListener implements CommandListener {

public void commandAction(Command c, Displayable s) {

if (c == cmdKeluar) {

destroyApp(false);

notifyDestroyed();

} else if (c == cmdHello) {

tb.setString("Hello Salam Kenal MIDlet...!");

}

}

};

}

IV. TUGAS

Buat program dengan nama project dan kelas dengan FirstCommand . setelah

project terbentuk letakan file-file source code berikut :

FirstCommand.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class FirstCommand extends MIDlet {

Display display;

private MainCanvas mainCanvas;

public FirstCommand() {

display = Display.getDisplay(this);

}

public void startApp() {

mainCanvas = new MainCanvas(this, display);

display.setCurrent(mainCanvas);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

Page 8: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

}

public void exitMIDlet() {

destroyApp(false);

notifyDestroyed();

}

};

MainCanvas.java

import javax.microedition.lcdui.*;

class MainCanvas

extends Canvas implements CommandListener{

private Display display;

private FirstCommand midlet;

private String string = "Command OK";

private Command cmOk, cmBack, cmCancel, cmStop, cmExit, cmHelp,

cmScreen, cmItem;

public MainCanvas(FirstCommand midlet,Display display) {

this.midlet = midlet;

this.display = display;

cmOk = new Command("OK", Command.OK, 1);

addCommand(cmOk);

cmBack = new Command("BACK", Command.BACK, 1);

cmCancel = new Command("CANCEL", Command.CANCEL, 1);

cmStop = new Command("STOP", Command.STOP, 1);

cmHelp = new Command("HELP", Command.HELP, 1);

cmScreen = new Command("SCREEN", Command.SCREEN, 1);

cmItem = new Command("ITEM", Command.ITEM, 1);

cmExit = new Command("EXIT", Command.EXIT, 1);

setCommandListener(this);

}

protected void paint(Graphics g) {

g.setColor(255,255,255);

g.fillRect(0, 0, getWidth(), getHeight());

g.setColor(0, 0, 0);

g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,F

ont.SIZE_LARGE));

g.drawString(string, 10,(getHeight() / 2), Graphics.TOP |

Graphics.LEFT);

}

public void commandAction(Command c, Displayable s) {

if(c == cmExit){

midlet.exitMIDlet();

}else{

if(c == cmOk){

string = "Command BACK";

removeCommand(cmOk);

addCommand(cmBack);

}else if(c == cmBack){

Page 9: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

string = "Command CANCEL";

removeCommand(cmBack);

addCommand(cmCancel);

}else if(c == cmCancel){

string = "Command STOP";

removeCommand(cmCancel);

addCommand(cmStop);

}else if(c == cmStop){

string = "Command HELP";

removeCommand(cmStop);

addCommand(cmHelp);

}else if(c == cmHelp){

string = "Command SCREEN";

removeCommand(cmHelp);

addCommand(cmScreen);

}else if(c == cmScreen){

string = "Command ITEM";

removeCommand(cmScreen);

addCommand(cmItem);

}else if(c == cmItem){

string = "Command EXIT";

removeCommand(cmItem);

addCommand(cmExit);

}

repaint();

}

}

};

Lakukan kompilasi analisis apa yang terjadi dan fungsi command apa saja yang

bisa digunakan?

(Kerjakan di Lab, manfaatkan waktu sebaik mungkin, berkreasilah jangan merasa

cukup dengan apa yang didapat pada praktikum ini Semangat )

Page 10: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

User Interface I

I. Tujuan

- Mahasiswa mampu membuat MIDlet menggunakan komponen-komponen

J2ME seperti membuat teks box, alert, dan sound alert.

II. Landasan Teori

Kebutuhan user interface untuk aplikasi yang berada dalam peralatan-peralatan

kecil seperti telepon seluler, PDA, maupun pager tentu akan berbeda dengan

kebutuhan pada saat kita membuat aplikasi desktop. 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. 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.

III. Praktikum

1. Membuat aplikasi MIDlet untuk menampilkan TextBox dan beberapa fungsi

yang dapat dijalankan didalamnya. Buat project dan kelas dengan nama

FirstTextBox. Jika project telah terbentuk buat file source code berikut:

FirstTextBox.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class FirstTextBox extends MIDlet implements CommandListener {

private Display display;

private TextBox tbClip;

private Command cmExit, cmStartMark, cmCopy, cmPaste, cmCut;

private int beginOffset = 0;

private char[] clipBoard = null;

private int clipBoardChars = 0;

public FirstTextBox(){

display = Display.getDisplay(this);

cmExit = new Command("Exit", Command.EXIT, 1);

cmStartMark = new Command("Mark", Command.SCREEN, 2);

Page 11: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

cmCopy = new Command("Copy", Command.SCREEN, 3);

cmPaste = new Command("Paste", Command.SCREEN, 4);

cmCut = new Command("Cut", Command.SCREEN, 5);

tbClip = new TextBox("Clip Board", "",156, TextField.ANY);

tbClip.addCommand(cmExit);

tbClip.addCommand(cmStartMark);

tbClip.addCommand(cmCopy);

tbClip.addCommand(cmPaste);

tbClip.addCommand(cmCut);

tbClip.setCommandListener(this);

clipBoard = new char[tbClip.getMaxSize()];

}

public void startApp(){

display.setCurrent(tbClip);

}

public void pauseApp(){

}

public void destroyApp(boolean unconditional){

}

public void commandAction(Command c, Displayable s) {

if (c == cmStartMark){

beginOffset = tbClip.getCaretPosition();

}else if (c == cmCopy &&(tbClip.getCaretPosition() > beginOffset)){

char[] chr = new char[tbClip.size()];

tbClip.getChars(chr);

clipBoardChars = tbClip.getCaretPosition() - beginOffset;

System.arraycopy(chr,beginOffset,clipBoard,0,

clipBoardChars);

}else if (c == cmPaste){ if ((tbClip.size() + clipBoardChars) <=

tbClip.getMaxSize())

tbClip.insert(clipBoard, 0, clipBoardChars, tbClip.getCaretPosition());

}else if (c == cmExit){

destroyApp(false);

notifyDestroyed();

}else if((c==cmCut)&&(tbClip.getCaretPosition()> beginOffset)){

char[] chr = new char[tbClip.size()];

tbClip.getChars(chr);

clipBoardChars = tbClip.getCaretPosition() - beginOffset;

System.arraycopy(chr,beginOffset,clipBoard, 0, clipBoardChars);

tbClip.delete(beginOffset,(tbClip.getCaretPosition()-

beginOffset));

}

}

protected void keyPressed(int keyCode) {

System.out.println("begin : " + beginOffset + " now : " +

tbClip.getCaretPosition());

}

}

Page 12: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

2. Membuat aplikasi MIDlet untuk menampilkan berbagai tipe alert (sejenis pesan

yang tampil dilayar yang menampilkan teks maupun gambar ke layar yang

berguna untuk menginformasikan sesuatu ke pemakai. Buat project baru dengan

nama project dan kelas FirstAlert. Jika project telah terbentuk buat file source

code berikut:

FirstAlert.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class FirstAlert extends MIDlet implements CommandListener{

Display display;

List list;

Image img;

Alert alAl, alCo, alEr, alIn, alWa;

Command cmExit;

public FirstAlert() {

display = Display.getDisplay(this);

try {

img = Image.createImage("/img.png");

} catch (java.io.IOException e) {

}

cmExit = new Command("Keluar", Command.EXIT, 1);

list = new List("First Alert", List.IMPLICIT);

list.append("ALARM", img);

list.append("CONFIRMATION", img);

list.append("ERROR", img);

list.append("INFO", img);

list.append("WARNING", img);

list.addCommand(cmExit);

list.setCommandListener(this);

display.setCurrent(list);

alAl = new Alert("ALARM", "Alert ALARM", null,

AlertType.ALARM);

alAl.setTimeout(Alert.FOREVER);

alCo = new Alert("CONFIRMATION", "Alert

CONFIRMATION", null, AlertType.CONFIRMATION);

alCo.setTimeout(Alert.FOREVER);

alEr = new Alert("ERROR", "Alert ERROR", null,

AlertType.ERROR);

alEr.setTimeout(Alert.FOREVER);

alIn = new Alert("INFO", "Alert INFO", null,

AlertType.INFO);

alIn.setTimeout(Alert.FOREVER);

alWa = new Alert("WARNING", "Alert WARNING", null,

AlertType.WARNING);

alWa.setTimeout(Alert.FOREVER);

}

Page 13: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

public void startApp() {

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

public void commandAction(Command c, Displayable s){

if (c == List.SELECT_COMMAND){

switch (list.getSelectedIndex()){

case 0:

display.setCurrent(alAl);

break;

case 1:

display.setCurrent(alCo, list);

break;

case 2:

display.setCurrent(alEr);

break;

case 3:

display.setCurrent(alIn, list);

break;

case 4:

display.setCurrent(alWa);

break;

}

}else if(c == cmExit){

exitMIDlet();

}

}

public void exitMIDlet() {

destroyApp(false);

notifyDestroyed();

}

};

3. Membuat aplikasi MIDlet Sound Alert yang dapat memainkan berbagai suara

yang dikeluarkan oleh alert tanpa harus menampilkan alert. Biasanya aplikasi

ini digunakan untuk menambahkan sebuah suara sebagai indicator pada

aplikasi. Buat project baru dengan nama project dan kelas dengan nama

SoundAlert. Jika project telah terbentuk buat file source code berikut:

SoundAlert.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class SoundAlert extends MIDlet implements ItemStateListener,

CommandListener {

Page 14: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

private Display display;

private Form fmMain;

private Command cmExit;

private ChoiceGroup cgSound;

public SoundAlert() {

display = Display.getDisplay(this);

cgSound = new ChoiceGroup("Choose a sound", Choice.EXCLUSIVE);

cgSound.append("Info", null);

cgSound.append("Confirmation", null);

cgSound.append("Warning", null);

cgSound.append("Alarm", null);

cgSound.append("Error", null);

cmExit = new Command("Keluar", Command.EXIT, 1);

fmMain = new Form("");

fmMain.append(cgSound);

fmMain.addCommand(cmExit);

fmMain.setCommandListener(this);

fmMain.setItemStateListener(this);

}

public void startApp()

{

display.setCurrent(fmMain);

}

public void pauseApp()

{ }

public void destroyApp(boolean unconditional)

{ }

public void commandAction(Command c, Displayable s)

{

if (c == cmExit)

{

destroyApp(false);

notifyDestroyed();

}

}

public void itemStateChanged(Item item)

{

switch (cgSound.getSelectedIndex())

{

case 0:

AlertType.INFO.playSound(display);

break;

Page 15: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

case 1:

AlertType.CONFIRMATION.playSound(display);

break;

case 2:

AlertType.WARNING.playSound(display);

break;

case 3:

AlertType.ALARM.playSound(display);

break;

case 4:

AlertType.ERROR.playSound(display);

break;

}

}

}

Page 16: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

User Interface II

I. Tujuan

- Mahasiswa mampu membuat MIDlet menggunakan komponen-komponen

J2ME seperti membuat Form, Gauge, dan Datefield.

II. Landasan Teori

Kebutuhan user interface untuk aplikasi yang berada dalam peralatan-peralatan

kecil seperti telepon seluler, PDA, maupun pager tentu akan berbeda dengan

kebutuhan pada saat kita membuat aplikasi desktop. 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. 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.

III. Praktikum

1. Membuat aplikasi MIDlet untuk membuat Form sebagai halaman untuk

memasukan data. Buat project dan kelas dengan nama FirstTextField. Jika

project telah terbentuk buat beberapa file source code berikut:

FirstTextField.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class FirstTextField extends MIDlet {

Display display;

private FirstTextFieldForm form;

public FirstTextField() {

display = Display.getDisplay(this);

}

public void startApp() {

form = new FirstTextFieldForm(this, display);

display.setCurrent(form);

}

public void pauseApp() {

Page 17: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

}

public void destroyApp(boolean unconditional) {

}

public void exitMIDlet() {

destroyApp(false);

notifyDestroyed();

}

};

FirstTextFieldForm.java

import javax.microedition.lcdui.*;

class FirstTextFieldForm

extends Form

implements CommandListener

{

private Display display;

private Command cmExit;

private FirstTextField midlet;

private TextField tfAny, tfEmail, tfNum, tfPass, tfPhone, tfUrl;

public FirstTextFieldForm(FirstTextField midlet, Display display) {

super("First TextField");

this.display = display;

this.midlet = midlet;

cmExit = new Command("Keluar", Command.EXIT, 1);

addCommand(cmExit);

tfAny = new TextField("Any", "", 50, TextField.ANY);

tfAny.setString("First TextField");

this.append(tfAny);

tfEmail = new TextField("Email Address", "", 50,

TextField.EMAILADDR);

tfEmail.setString("[email protected]");

this.append(tfEmail);

tfNum = new TextField("Numeric", "", 50,

TextField.NUMERIC);

tfNum.setString("2012");

this.append(tfNum);

tfPass = new TextField("Password", "", 50,

TextField.PASSWORD);

tfPass.setString("UserInterface");

this.append(tfPass);

tfPhone = new TextField("Phone Number", "", 50,

TextField.PHONENUMBER);

tfPhone.setString("085724251511");

this.append(tfPhone);

tfUrl = new TextField("URL", "", 50, TextField.URL);

tfUrl.setString("http://midlet.uniku.ac.id");

this.append(tfUrl);

setCommandListener(this);

Page 18: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

}

public void commandAction(Command c, Displayable s){

if (c == cmExit) {

midlet.exitMIDlet();

}

}

}

Hasilnya adalah

Page 19: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

Short Messaging Service (SMS)

I. Tujuan

Seteah mempelajari dan memahami modul ini, mahasiswa diharapkan mampu

untuk membuat MIDlet yang dapat mengirim dan menerima SMS.

II. Landasan Teori

WMA (Wireless Messaging API) adalah paket opsional yang terdapat pada

J2ME, yang mengijinkan kita untuk mengembangkan aplikasi-aplikasi yang

mampu melakukan pengiriman dan penerimaan pesan melalui SMSC(Short

Messaging Service Center). WMA 1.0 menyediakan API dasar untuk mengirim dan

menerima SMS

III. Praktikum

1. Mengirim SMS

Buat Project baru dengan nama project dan nama kelas SendSMS dan pilih

setting standar dengan tambahan berikut :

Tambahkan pada tab User Defined pada jendela setting

Key : SMS-Port

Value : 5000

Tambahan ini berlaku jika SMS yang dikirim ditujukan pada port tertentu, tapi

jika diinginkan SMS yang dikirimkan masuk ke inbox ponsel, maka tambahan

ini tidak perlu.

Jika project sudah terbentuk, buat file source code berikut :

SendSMS.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class SendSMS extends MIDlet implements CommandListener {

private Display display;

private Command cmExit, cmOk;

private PhoneInput form;

TextBox tbClip;

public SendSMS(){

Page 20: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

display = Display.getDisplay(this);

cmOk = new Command("Lanjut", Command.OK, 1);

cmExit = new Command("Keluar", Command.EXIT, 1);

tbClip = new TextBox("Pesan", "",156, TextField.ANY);

tbClip.addCommand(cmOk);

tbClip.addCommand(cmExit);

tbClip.setCommandListener(this);

}

public void startApp(){

display.setCurrent(tbClip);

}

public void pauseApp(){

}

public void destroyApp(boolean unconditional){

}

public void commandAction(Command c, Displayable s) {

if (c == cmOk){

String smsPort = getAppProperty("SMS-Port");

form = new PhoneInput(this, display, tbClip.getString(), smsPort);

display.setCurrent(form);

}else if (c == cmExit){

exitMIDlet();

}

}

public void exitMIDlet(){

destroyApp(false);

notifyDestroyed();

}

}

PhoneInput.java

import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import javax.wireless.messaging.*;

import java.io.IOException;

class PhoneInput

extends Form

implements ItemCommandListener, ItemStateListener, CommandListener,

Runnable

{

private Display display;

private Command cmSend, cmCancel, cmExit;

private TextField tfPhone;

private SendSMS midlet;

private String msg;

private StringItem itemCancel, itemSend, itemExit;

private Alert al;

private String adr;

Page 21: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

private String smsPort;

public PhoneInput(SendSMS midlet, Display display, String msg, String

smsPort) {

super("Nomor HP");

this.display = display;

this.midlet = midlet;

this.msg = msg;

this.smsPort = smsPort;

cmSend = new Command("Kirim", Command.OK, 1);

cmCancel = new Command("Batal", Command.CANCEL, 1);

cmExit = new Command("Keluar", Command.EXIT, 1);

tfPhone = new TextField("Nomor HP", "",

30,TextField.PHONENUMBER);

this.append(tfPhone);

this.setCommandListener(this);

itemSend = new StringItem(null, "Kirim", Item.BUTTON);

itemSend.setDefaultCommand(cmSend);

itemSend.setItemCommandListener(this);

append(itemSend);

itemCancel = new StringItem(null, "Batal", Item.BUTTON);

itemCancel.setDefaultCommand(cmCancel);

itemCancel.setItemCommandListener(this);

append(itemCancel);

itemExit = new StringItem(null, "Keluar", Item.BUTTON);

itemExit.setDefaultCommand(cmExit);

itemExit.setItemCommandListener(this);

append(itemExit);

setItemStateListener(this);

}

public void itemStateChanged(Item item) {

}

public void commandAction(Command c, Item item) {

if (c == cmSend) {

if ((tfPhone.size() == 0)){

al = new Alert("Error", "Nomor HP Tidak Valid", null, AlertType.ERROR);

al.setTimeout(Alert.FOREVER);

display.setCurrent(al);

}else {

this.adr = "sms://" + tfPhone.getString() + ":" + smsPort;

new Thread(this).start();

}

}else if(c == cmCancel){

display.setCurrent(midlet.tbClip);

}else if(c == cmExit){

midlet.exitMIDlet();

}

}

Page 22: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

public void commandAction(Command c, Displayable s) {

}

public void run() {

MessageConnection smsconn = null;;

try {

smsconn = (MessageConnection)Connector.open(adr);

TextMessage txtmessage = (TextMessage)smsconn.newMessage(

MessageConnection.TEXT_MESSAGE);

txtmessage.setAddress(adr);

txtmessage.setPayloadText(msg);

smsconn.send(txtmessage);

Alert alert = new Alert("Info", "Pesan Terkirim", null,

AlertType.INFO);

alert.setTimeout(Alert.FOREVER);

display.setCurrent(alert);

} catch (Throwable t) {

System.out.println("error : " + t.toString());

Alert alert = new Alert("Error", "Pesan Gagal Terkirim",

null, AlertType.ERROR);

alert.setTimeout(Alert.FOREVER);

display.setCurrent(alert);

}

if (smsconn != null) {

try {

smsconn.close();

} catch (IOException ioe) {

}

}

}

}

Page 23: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

2. Menerima SMS

Buat Project baru dengan nama project dan nama kelas ReceiveSMS dan pilih

setting standar dengan tambahan berikut :

Tambahkan pada tab User Defined pada jendela setting

Key : SMS-Port

Value : 5000

Jika project sudah terbentuk, buat file source code berikut :

ReceiveSMS.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.media.*;

import javax.microedition.media.control.*;

public class ReceiveSMS extends MIDlet {

Display display;

public ReceiveSMS() {

display = Display.getDisplay(this);

}

public void startApp() {

String smsPort = getAppProperty("SMS-Port");

SMSFormReceive form = new SMSFormReceive(this, display, smsPort);

display.setCurrent(form);

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {

}

public void exitMIDlet() {

destroyApp(false);

notifyDestroyed();

}

};

SMSFormReceive.java

import java.io.IOException;

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import javax.wireless.messaging.*;

public class SMSFormReceive

extends Form

implements CommandListener, Runnable, MessageListener {

private ReceiveSMS midlet;

private Display display;

private Command cmExit;

private Thread thread;

Page 24: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

private String address, senderAddress;

private String[] connections;

private MessageConnection smsconn = null;

public SMSFormReceive(ReceiveSMS midlet, Display display, String smsPort)

{

super("Receive SMS");

this.midlet = midlet;

this.display = display;

cmExit = new Command("Keluar", Command.EXIT, 1);

setCommandListener(this);

addCommand(cmExit);

address = "sms://:" + smsPort;

connections = PushRegistry.listConnections(true);

if (connections == null || connections.length == 0) {

append("Menunggu SMS...");

}

try {

smsconn = (MessageConnection)

Connector.open(address);

smsconn.setMessageListener(this);

} catch (Exception e) {

}

thread = new Thread(this);

thread.start();

}

public void commandAction(Command c, Displayable s) {

if (c == cmExit){

if (smsconn != null) {

try {

smsconn.close();

} catch (IOException ioe) {

}

}

midlet.exitMIDlet();

}

}

public void notifyIncomingMessage(MessageConnection conn) {

if(thread == null){

thread = new Thread(this);

thread.start();

}

}

public void run(){

ReceiveSMS();

}

public void ReceiveSMS() {

try {

Page 25: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

Message msg = smsconn.receive();

if (msg != null) {

senderAddress = msg.getAddress();

setTitle("Dari: " + senderAddress);

if (msg instanceof TextMessage) {

StringItem stringItem = new StringItem("Isi :

",((TextMessage)msg).getPayloadText());

append(stringItem);

} else {

StringBuffer buf = new StringBuffer();

byte[] data = ((BinaryMessage)msg).getPayloadData();

for (int i = 0; i < data.length; i++) {

int intData = (int)data[i] & 0xFF;

if (intData < 0x10) {

buf.append("0");

}

buf.append(Integer.toHexString(intData));

buf.append(' ');

}

StringItem stringItem = new StringItem("Isi : ", buf.toString());

append(stringItem);

}

}

} catch (IOException e) {

}

}

};

Page 26: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

Multimedia Messaging Service (MMS)

I. Tujuan

Setelah mempelajari modul ini, mahasiswa diharapkan mampu membuat

MIDlet untuk mengirim dan menerima pesan MMS pada perangkat mobile device.

II. Landasan Teori

Multimedia Messaging Service merupakan hasil pengembangan dari Short

Messaging Service (SMS). Yang dimaksud multimedia disini adalah kombinasi

teks, foto, bahkan dalam perkembangannya bukan tidak mungkin dapat

mengirimkan video dan animasi. Pada teknoloi J2ME pengiriman multimedia

dengan MMS, ukuran file masih dibatasi sekitar 30 KB ke bawah karena jika

ukurannya terlalu besar MIDlet akan menjadi error.

III. Praktikum

1. Buat proyek untuk mengirim pesan MMS dengan nama project dan nama kelas

SendMMS dan pilih setting standar dengan penambahan wireless messaging

API 2.0 (JSR205) pada tab API selection pada jendela setting. Jika project telah

terbentuk, masukan gambar dengan ukuran 30 KB kebawah pada direktori res

dan ketik source code berikut :

SendMMS.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.media.*;

import javax.microedition.media.control.*;

public class SendMMS

extends MIDlet {

Display display;

public SendMMS() {

display = Display.getDisplay(this);

}

public void startApp() {

MMSFormSend form = new MMSFormSend(this, display);

display.setCurrent(form);

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {

Page 27: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

}

public void exitMIDlet() {

destroyApp(false);

notifyDestroyed();

}

};

MMSFormSend.java

import java.util.*;

import java.io.InputStream;

import java.io.IOException;

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import javax.wireless.messaging.*;

public class MMSFormSend

extends Form

implements CommandListener, Runnable {

private SendMMS midlet;

private Display display;

private Command cmSend, cmExit;

private Image bg;

private String text = "Ini MMS pertamaku dengan J2ME";

public MMSFormSend(SendMMS midlet, Display display) {

super("Send MMS");

this.midlet = midlet;

this.display = display;

cmSend = new Command("Kirim", Command.OK, 1);

addCommand(cmSend);

cmExit = new Command("Keluar", Command.EXIT, 1);

setCommandListener(this);

addCommand(cmExit);

try {

bg = Image.createImage("/J2ME.jpg");

} catch (java.io.IOException e) {

}

append(bg);

append("\n");

append(text);

}

public void commandAction(Command c, Displayable s) {

if (c == cmExit){

midlet.exitMIDlet();

}else if(c == cmSend){

new Thread(this).start();

}

}

Page 28: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

public void run(){

sendMMS();

}

public void sendMMS() {

String appID = midlet.getAppProperty("MMS-ApplicationID");

String address = "mms://+5550000:" + appID;

Vector part = new Vector();

addPart(part);

MessageConnection mmsconn = null;

try {

mmsconn = (MessageConnection) Connector.open(address);

MultipartMessage mmmessage =(MultipartMessage) mmsconn.newMessage(

MessageConnection.MULTIPART_MESSAGE);

mmmessage.setAddress(address);

MessagePart[] parts = getParts(part);

for (int i = 0; i < parts.length; i++) {

mmmessage.addMessagePart(parts[i]);

}

mmmessage.setSubject("MMS Pertama");

mmsconn.send(mmmessage);

} catch (Exception e) {

}

if (mmsconn != null) {

try {

mmsconn.close();

} catch (IOException ioe) {

}

}

}

public MessagePart[] getParts(Vector parts) {

MessagePart[] partsArray = new MessagePart[parts.size()];

parts.copyInto(partsArray);

return partsArray;

}

public void addPart(Vector parts){

int counter = 0;

MessagePart mpart;

String mimeType = "text/plain";

String encoding = "UTF-8";

try{

byte[] contents = text.getBytes(encoding);

mpart = new MessagePart(contents, 0, contents.length, mimeType, "id" +

counter, "contentLocation", encoding);

parts.addElement(mpart);

counter ++;

}catch(Exception e){

}

Page 29: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

mimeType = "image/jpg";

String image = "/J2ME.jpg";

try{

InputStream is = getClass().getResourceAsStream(image);

byte[] contents = new byte[is.available()];

is.read(contents);

mpart = new MessagePart(contents, 0, contents.length,mimeType, "id" +

counter,"contentLocation", null);

parts.addElement(mpart);

counter ++;

}catch(Exception e){

}

}

};

2. Membuat MIDlet untuk menerima MMS dengan id aplikasi tertentu. Buat

project baru dengan nama project dan nama kelas ReceiveMMS dan pilih

setting standar dengan penambahan Wireless Messaging API 2.0(JSR 205) pada

tab API Selection pada jendela setting. Jika proyek telah terbentuk buat source

code berikut :

ReceiveMMS.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.media.*;

import javax.microedition.media.control.*;

public class ReceiveMMS

extends MIDlet {

Display display;

public ReceiveMMS() {

display = Display.getDisplay(this);

}

public void startApp() {

MMSFormReceive form = new MMSFormReceive(this, display);

display.setCurrent(form);

Page 30: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {

}

public void exitMIDlet() {

destroyApp(false);

notifyDestroyed();

}

};

MMSFormReceive.java

import java.io.IOException;

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

import javax.microedition.io.*;

import javax.wireless.messaging.*;

public class MMSFormReceive

extends Form

implements CommandListener, Runnable, MessageListener {

private ReceiveMMS midlet;

private Display display;

private Command cmExit;

private Thread thread;

private String appID, address;

private String[] connections;

private MessageConnection mmsconn = null;

public MMSFormReceive(ReceiveMMS midlet, Display display) {

super("Receive MMS");

this.midlet = midlet;

this.display = display;

cmExit = new Command("Keluar", Command.EXIT, 1);

setCommandListener(this);

addCommand(cmExit);

appID = midlet.getAppProperty("MMS-ApplicationID");

address = "mms://:" + appID;

connections = PushRegistry.listConnections(true);

if (connections == null || connections.length == 0) {

append("Menunggu MMS dengan ID aplikasi " + appID + "...");

}

try {

mmsconn = (MessageConnection) Connector.open(address);

mmsconn.setMessageListener(this);

} catch (Exception e) {

}

thread = new Thread(this);

thread.start();

}

public void commandAction(Command c, Displayable s) {

Page 31: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

if (c == cmExit){

if (mmsconn != null) {

try {

mmsconn.close();

} catch (IOException ioe) {

}

}

midlet.exitMIDlet();

}

}

public void notifyIncomingMessage(MessageConnection conn) {

if(thread == null){

thread = new Thread(this);

thread.start();

}

}

public void run(){

ReceiveMMS();

}

public void ReceiveMMS() {

try {

Message msg = mmsconn.receive();

if (msg != null) {

String senderAddress = msg.getAddress();

deleteAll();

String titleStr = senderAddress.substring(6);

int colonPos = titleStr.indexOf(":");

if (colonPos != -1) {

titleStr = titleStr.substring(0, colonPos);

}

setTitle("Dari: " + titleStr);

if (msg instanceof MultipartMessage) {

MultipartMessage mpm = (MultipartMessage)msg;

StringBuffer buff = new StringBuffer("Subjek: ");

String subject;

buff.append((subject = mpm.getSubject()));

buff.append("\nTanggal: ");

buff.append(mpm.getTimestamp().toString());

buff.append("\nIsi:");

StringItem messageItem = new StringItem("Pesan",

buff.toString());

messageItem.setLayout(Item.LAYOUT_NEWLINE_AFTER);

append(messageItem);

MessagePart[] parts = mpm.getMessageParts();

if (parts != null) {

for (int i = 0; i < parts.length; i++)

buff = new StringBuffer();

MessagePart mp = parts[i];

Page 32: Praktikum Java Mobile

Laboratorium FKOM-UNIKU

Erlan Darmawan, S.Kom., M.Si

buff.append("Content-Type: ");

String mimeType = mp.getMIMEType();

buff.append(mimeType);

String contentLocation = mp.getContentLocation();

buff.append("\nContent:\n");

byte[] ba = mp.getContent();

try {

Image image = Image.createImage(ba, 0, ba.length);

append(buff.toString());

ImageItem imageItem = new ImageItem(contentLocation,

image, Item.LAYOUT_NEWLINE_AFTER, contentLocation);

append(imageItem);

} catch (IllegalArgumentException iae) {

buff.append(new String(ba));

StringItem stringItem = new StringItem("Part", buff.toString());

stringItem.setLayout(Item.LAYOUT_NEWLINE_AFTER);

append(stringItem);

}

}

}

}

}

} catch (IOException e) {

}

}

};