MENGIRIM DAN MENERIMA SMS MENGGUNAKAN
PROGRAM JAVA
Tujuan :
·
Dapat
memahami cara Mengirim
dan menerima sms menggunakan program java
Alat –
alat yang diperlukan :
·
Sun
java(tm)wireless Toolkit 25.2_01 for CLDC. Untuk menginstallnya, terlebih
dahulu install jdk
·
Notepad
++
1.
Buka
aplikasi Wireless Toolkit 2.5.2.
2.
Buat
project baru dengan nama sms
3.
kemudian
atur Target Platform menjadi JTWI dan Configuration CLDC 1.1. kemudian klik OK
4.
ketikkan
perintah dibawah dengan menggunakan Notepad, Notepad++ atau textpad. Simpan dengan
nama sms.java. disimpan di folder C:\Users\axio\j2mewtk\2.5.2\apps\sms\src.
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 sms extends
MIDlet implements CommandListener, Runnable,
MessageListener {
Display display;
Form form;
List menuList; //list untuk
menu awal
Command exitCom, replyCom,
backCom, clrCom, sendCom; //macam macam command yg digunakan
TextBox textSmsMasuk,
textSmsKeluar; //tempat untuk text sms yg masuk dan 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 sms() {
display =
Display.getDisplay(this);
form = new
Form("sms");
exitCom = new
Command("keluar", Command.EXIT, 1);
replyCom = new
Command("balas", Command.SCREEN, 1);
backCom = new
Command("Kembali", Command.BACK, 3);
clrCom = new Command("Hapus
Tulisan", Command.OK, 2);
sendCom = new
Command("Kirim", Command.OK, 1);
menuList = new List("Menu
SMS", List.IMPLICIT);
port = "4321";
//port yang saya gunakan, silakan ganti sesuai keinginan masing masing
textSmsMasuk = new
TextBox(null, null, 500, TextField.ANY);
textSmsKeluar = new
TextBox("Silakan Menulis Pesan", 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(); // tampilan menu awal
}
public void pauseApp() {
}
public void destroyApp(boolean
unconditional) {
//sebelum aplikasinya keluar
atau koneksi mati ditutup dulu
done = true;
thread = null;
if (smsconn != null) {
try {
smsconn.close();
} catch (IOException e) {
}
}
//aplikasi ditutup
notifyDestroyed();
}
public void menu() { //membuat
menu awal untuk sementara ini baru ada 3 menu dulu
menuList.append("Tulis
Pesan", null);//1. menu tulis sms baru
menuList.append("about",
null); //2. menu about
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 yang mau dikirimi sms
form.setTitle("Sms Siap
dikirim"); //peringatan sms siap dikirim
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 dengan perintah dibawah ini
new Thread(new Runnable() {
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) { //ini untuk tempat membaca sms yang 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);
}
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) {
//mengubah format
"sms://+6285XXXX" jadi "+6285XXX"
String hs = null;
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 dengan java oleh Ririn JM",
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) {
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);//ini memasukan sms yg diterima ke textbox
}
tutupKoneksi();
bukaKoneksi();
} catch (IOException e) {
}
}
public void
notifyIncomingMessage(MessageConnection conn) {
if (thread == null) {
done = false;
thread = new Thread(this);
thread.start();
}
}
}
5.
klik
Build. program ada
kesalahan maka akan tampil seperti ini
Namun jika program benar maka building complete
6. klik Run maka akan membuka simulator handphone
7. buka satu lagi aplikasi Wireless Toolkit 2.5.2. klik Open project pilih sms.
8. klik Run maka akan membuka simulator handphone.
9. Kemudian klik launch pada dua simulator.
10. pada simulator pertama pilih kirim Pesan > masukkan
Pesan > pilih menu > pilih kirim.
11. masukkan no simulator kedua seperti : +5550001. Lalu kirim.
Maka pada simulator kedua akan tampil pesan dari simulator pertama.
12. klik balas untuk membalas pesan. Pilih kirim masukkan
nomor simulator pertama. Lalu kirim.