APLIKASI SMS DENGAN PROGRAM JAVA
Perangkat lunak yang
perlu disiapkan antara lain:
Sun
Java Wirelles Toolkit 2.5.2
Notepad
++ / TextPad
Langkah-langkah
pembuatan aplikasi adalah sebagai berikut:
Pastikan
laptop atau PC anda telah terinstal Java dan Wireless Toolkit 2.5.2
Jalankan
program wireless toolkit 2.5.2
Pilih
New Project dan isi project name dan
midlet class name dengan nama sms_new
Kemudian
create project.
Kemudian buka texpad dan masukkan
program sms_new.java
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_new 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
sms_new() {
display
= Display.getDisplay(this);
form
= new Form("Message");
exitCom
= new Command("exit", Command.EXIT, 1);
replyCom
= new Command("Response", Command.SCREEN, 1);
backCom
= new Command("back", Command.BACK, 3);
clrCom
= new Command("Hapus Tulisan", Command.OK, 2);
sendCom
= new Command("hantarkan", Command.OK, 1);
menuList
= new List("Menu sms", 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) {
}
}
//disini
mati deh aplikasi kita
notifyDestroyed();
}
public
void menu() { //membuat menu awal untuk sementara ini baru ada 3 menu
menuList.append("Create
Sms", null);//1. menu tulis sms baru
menuList.append("about",
null);//2. menu about (gak penting sih sebenarnya)
menuList.append("Exit",
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
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);
}
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;
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, " +
"Aplikasi ini dapat digunakan untuk
mengirim dan menerima pesan satu sama lain dengan menggunakan bahasa
pemrograman java",
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);//memasukan sms ke texbok
}
tutupKoneksi();
bukaKoneksi();
}
catch (IOException e) {
}
}
public
void notifyIncomingMessage(MessageConnection conn) {
if
(thread == null) {
done
= false;
thread
= new Thread(this);
thread.start();
}
}
}
6.
Setelah program selesai dirancang,
simpan di dalam folder yang sudah kia buat tadi yaitu folder “sms_new”. Didalam
folder ini terdapat beberapa folder yang otomatis ada setelah pembuatan
project. Simpan pada folder “src” dengan format dot java (.java).
7.
Setelah penyimpanan selesai, open project yang telah kita buat tadi.
Pilih sms_new dan klik open project.
8.
Build project
9.
Jalankan dengan mengklik Run
10. Apabila
ingin memasukan aplikasi ini kedalam handphone, lakukan package terlebih dahulu
dengan membuka project >> package
>> create package.
Setelah itu buka folder
bin, maka akan terdapat 3 buah file
yang secara otomatis akan mucul setelah proses package. Diantaranya file dengan
format .jad, .jar, dan .mf.
Pindahkan file .Jar kedalam handphone.