Anda di halaman 1dari 17

Membuat Aplikasi Kirim SMS

Menggunakan Java J2ME


Kali ini kita akan membahas mengenai bagaimana membuat aplikasi kirim sms dengan
menggunakan java. Untuk membuatnya, kita memerlukan alat-alat sebagai berikut.
1. 1 buah laptop/ komputer

2. Software Sun Java (TM) Wireless Toolkit 2.5.2_01 for CLDC

3. Notepad, Notepad++, atau TextPad untuk mengetik listing programnya


Langkah Langkah :

1. Kita jalankan dulu Sun Java (TM) Wireless Toolkit 2.5.2_01 for CLDC. Setelah itu, klik

New Project, di ProjectName kita ketikkan nama project kita sesuai keinginan,
misalnya smsKu, di MIDlet Class Name ketikkan tulisan yang sama, Lalu klik Create
Project.

Gambar 1. Saat pembuatan project baru

2. Selanjutnya akan muncul kotak dialog setting, kita klik OK saja. Setelah itu akan
tampil tulisan

Creating project smsKu


Place Java source files in C:\MyDocuments\
Java\j2mewtk\252\apps\smsKu\src
Ket: Disinilah tempat kita menyimpan source atau koding program yang kita
buat yaitu pada direktori SRC
Place Aplication resource files in C:\MyDocuments\
Java\j2mewtk\252\apps\smsKu\res
Ket: Disinilah tempat kita menyimpan file gambar atau animasi yang kita buat
yaitu pada direktori RES

Zahrunisa Qorry 6 CB

Page 1

Place Aplication library files in C:\MyDocuments\


Java\j2mewtk\252\apps\smsKu\lib
Ket: Disinilah tempat kita menyimpan file fungsi yang kita buat yaitu pada
direktori LIB

3. Kita beralih ke Notepad, dan ketikkan listing program berikut:


import java.util.*;

import java.io.IOException;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import javax.wireless.messaging.*;

import javax.microedition.midlet.*;
public class smsKu extends MIDlet implements CommandListener, Runnable,
MessageListener {
Display display;
Form form;

List menuList; //list untuk menu awal

Command exitCom, replyCom, backCom, clrCom, sendCom; //command yg digunakan

TextBox textSmsMasuk, textSmsKeluar; //tempat text sms yg masuk & yg mau dikirim
TextField textNo; //untuk tempat memasukan no tujuan
String port, isiSmsKeluar; //port dan isi sms
Thread thread;

String[] connections;
boolean done;

MessageConnection smsconn;
Message msg;

public smsKu() {

display = Display.getDisplay(this);
form = new Form("sms-an Yuk");

exitCom = new Command("keluar", Command.EXIT, 1);

replyCom = new Command("Zahrunisa", Command.SCREEN, 1);


Zahrunisa Qorry 6 CB

Page 2

backCom = new Command("Kembali", Command.BACK, 3);

clrCom = new Command("Hapus Tulisan", Command.OK, 2);


sendCom = new Command("Zahrunisa", Command.OK, 1);
menuList = new List("Menu sms Ku", List.IMPLICIT);

port = "4321"; //port yang aku gunakan, ganti sesuai keinginan masing masing
textSmsMasuk = new TextBox(null, null, 500, TextField.ANY);
textSmsKeluar = new TextBox("Silakan Menulis Sms", null,
500, TextField.ANY);

textNo = new TextField("Masukan Nomor Tujuan", "",


15, TextField.PHONENUMBER);
}

public void startApp() {

bukaKoneksi(); //disini membuka koneksi untuk siap menerima sms masuk


menu(); // bikin tampilan menu awal
}

public void pauseApp() {


}

public void destroyApp(boolean unconditional) {


//sebelum aplikasinya keluar ato mati koneksi ditutup dulu
done = true;

thread = null;

if (smsconn != null) {
try {

smsconn.close();

} catch (IOException e) {
}
}
Zahrunisa Qorry 6 CB

Page 3

//disini mati deh aplikasi kita


notifyDestroyed();
}

public void menu() { //membuat menu awal untuk sementara ini baru ada 3 menu
menuList.append("Tulis Sms", null);//1. menu tulis sms baru

menuList.append("about", null);//2. menu about (gak penting sih sebenarnya)


menuList.append("Keluar", null);//3. menu untuk keluar aplikasi
menuList.addCommand(exitCom); //add command keluar
menuList.setCommandListener(this);
display.setCurrent(menuList);
}

public void tulisSms() { //membuat textbox untuk menulis sms baru

textSmsKeluar.addCommand(sendCom); //add command untuk kirim

textSmsKeluar.addCommand(clrCom); // add command untuk clear text

textSmsKeluar.addCommand(backCom); //add command untuk kembali kemenu awal


textSmsKeluar.setCommandListener(this);
display.setCurrent(textSmsKeluar);
}

public void masukNo() { //disini untuk memasukan nomor tujuan


form.setTitle("Sms Siap dikirim"); //udah taukan yang ini?

form.append(textNo); //menambahkan textField untuk nomor tujuan

form.addCommand(backCom); //menambahkan command untuk kembali ke menu


awal

form.addCommand(sendCom); //menambahkan command untuk mengirim


form.setCommandListener(this);
display.setCurrent(form);
}

public void kirim() { //disini sms yang udah ditulis dikirim dgn perintah
Zahrunisa Qorry 6 CB

Page 4

new Thread(new Runnable() {


//perhatiin ya

public void run() {


try {

String isiSms = isiSmsKeluar;

String noTujuan = textNo.getString();

String address = "sms://" + noTujuan + ":" + port;


MessageConnection smsConnKir = null;
Message isiSmsNya = null;

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


TextMessage txtmessage =

(TextMessage) smsConnKir.newMessage(MessageConnection.TEXT_MESSAGE);
txtmessage.setAddress(address);

txtmessage.setPayloadText(isiSms);
isiSmsNya = txtmessage;

smsConnKir.send(isiSmsNya);
} catch (Throwable t) {
t.printStackTrace();
}
}

}).start();
}

public void terima(String isi, String no, Date tgl) { //tempat sms masuk
String nonya = fixNomer(no);

textSmsMasuk = new TextBox("Sms dari:" + nonya + " " + tgl, isi,


isi.length(), TextField.ANY);

textSmsMasuk.addCommand(replyCom);
textSmsMasuk.addCommand(exitCom);

textSmsMasuk.setCommandListener(this);
display.setCurrent(textSmsMasuk);
Zahrunisa Qorry 6 CB

Page 5

}
public void bukaKoneksi() { //membuka koneksi agar bisa menerima sms yg masuk
String smsConnection = "sms://:" + port;
done = true;

thread = null;
try {

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


smsconn.setMessageListener(this);
} catch (IOException ioe) {
ioe.printStackTrace();
}

connections = PushRegistry.listConnections(true);
done = false;

thread = new Thread(this);


thread.start();
}

public void tutupKoneksi() { //untuk menutup koneksi sms


try {

smsconn.close();

} catch (IOException e) {
}
}
public String fixNomer(String no) {

//dari format no gini "sms://+6285XXXX" jadi "+6285XXX" gitu fungsinya


String hs = null;

Zahrunisa Qorry 6 CB

Page 6

hs = no.substring(6, no.length());
return hs;
}

public void commandAction(Command c, Displayable d) {


if (c == exitCom) {

destroyApp(true);
}

if (d == menuList) {

if (menuList.isSelected(0)) {
tulisSms();

} else if (menuList.isSelected(1)) {

Alert about = new Alert("About", "Aplikasi SMS menggunakan j2me, " +


"source-nya saya dapatkan dari Internet",

null, AlertType.INFO);

display.setCurrent(about);

} else if (menuList.isSelected(2)) {
destroyApp(true);
}
}

if (d == textSmsKeluar) {
if (c == sendCom) {
form.deleteAll();
masukNo();

} else if (c == clrCom) {

textSmsKeluar.setString("");
} else if (c == backCom) {

display.setCurrent(menuList);
}
}

if (d == textSmsMasuk) {
if (c == exitCom) {

Zahrunisa Qorry 6 CB

Page 7

display.setCurrent(menuList);
} else if (c == replyCom) {
tulisSms();
}
}

if (d == form) {

if (c == backCom) {
form.deleteAll();

display.setCurrent(textSmsKeluar);
} else if (c == sendCom) {

isiSmsKeluar = textSmsKeluar.getString();
textSmsKeluar.setString("");
kirim();
}
}
}
public void run() { //untuk menerima sms yang masuk
try {

msg = smsconn.receive();

String senderAddress = msg.getAddress();


Date waktuSms = msg.getTimestamp();
if (msg instanceof TextMessage) {

String isiSmsMasuk = ((TextMessage) msg).getPayloadText();

terima(isiSmsMasuk, senderAddress, waktuSms);//memasukan sms ke texbok


}

tutupKoneksi();
bukaKoneksi();

} catch (IOException e) {
}
}
Zahrunisa Qorry 6 CB

Page 8

public void notifyIncomingMessage(MessageConnection conn) {


if (thread == null) {
done = false;

thread = new Thread(this);


thread.start();
}
}
}
Simpan program tersebut pada direktori src seperti di atas dengan nama dini.java
(nama file harus sama dengan nama kelas pada saat kita membuat new project).
Selanjutnya kita kembali lagi ke Sun Java (TM) Wireless Toolkit 2.5.2_01 for CLDC.

4. Kemudian, klik Build untuk mengetahui apakah program yang kita buat sudah benar
atau belum. Jika masih terdapat kesalahan maka perhatikan kesalahannya pada baris

kesalahan dan lokasi kesalahan yang ditunjukan pada layar konsul. Perbaiki
kesalahan program tersebut hingga selesai simpan dan ulangi Build kembali. Setelah

proses build selesai jika tidak terdapat kesalahan, klik Run. Kita bisa coba jalankan
aplikasi buatan kita. Dalam percobaan aplikasi ini, kita klik Run sebanyak 2kali agar
tampilan handphone menjadi 2 buah dengan nomor yang berbeda.

Zahrunisa Qorry 6 CB

Page 9

5. Berikut adalah urutan hasil tampilan aplikasi yang telah dibuat.

Gambar 2. Tampilan ketika program dijalankan

Gambar 3. Tampilan awal program

Gambar 4. Tampilan ketika SMS


diketik

Zahrunisa Qorry 6 CB

Page 10

Gambar 5. Tampilan ketika sms


akan dikirim

Zahrunisa Qorry 6 CB

Page 11

Gambar 6. Tampilan ketika sms akan dikirim ke nomor tujuan

Zahrunisa Qorry 6 CB

Page 12

Gambar 7. Tampilan ketika SMS yang dikirim telah sampai di nomor tujuan

Zahrunisa Qorry 6 CB

Page 13

Gambar 8. Tampilan ketika SMS telah dibalas dari nomor tujuan +5550003

Zahrunisa Qorry 6 CB

Page 14

Cara memindahkan file Aplikasi SMS j2me ke


dalam Handphone
1. Buka aplikasi Sun Java (TM) Wireless Toolkit 2.5.2_01 for CLDC. Lalu klik Open
Project.

2. Build terlebih dahulu aplikasi yang akan dipindahkan ke handphone dengan cara
klik tombol Build seperti gambar di bawah ini.

Zahrunisa Qorry 6 CB

Page 15

3. Setelah build selesai, klik tab Package, lalu klik Create Package.

4. Setelah package selesai, buka aplikasi pada folder penyimpanan project di folder
bin.
Dalam
hal
ini
folder
terletak
di
C:\Users\Win
7\j2mewtk\2.5.2\apps\smsKu.

Zahrunisa Qorry 6 CB

Page 16

5. Isi folder bin tadi adalah seperti di gambar di bawah ini. File yang akan
dipindahkan ke dalam handphone adalah file dengan ekstensi .jar atau
Executable Jar File.

Semoga Bermanfaat

Zahrunisa Qorry 6 CB

Page 17