You are on page 1of 4

import import import import import import

java.util.*; java.io.IOException; javax.microedition.io.*; javax.microedition.lcdui.*; javax.wireless.messaging.*; javax.microedition.midlet.*;

/** * @author Awin Suganda * @see http://www.awins.co.cc */ 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("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 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) { } } //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 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 masuk String done = thread void bukaKoneksi() { //membuka koneksi agar bisa menerima sms yg smsConnection = "sms://:" + port; true; = 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 buatan Awin Suganda, " + "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) { 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(); } } }

You might also like