koding sms + screenshot

16
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;

Upload: upbatam

Post on 27-Feb-2023

1 views

Category:

Documents


0 download

TRANSCRIPT

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("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 digunakan

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 atau shut koneksi ditutup dulu

done = true;

thread = null;

if (smsconn != null) {

try {

smsconn.close();

} catch (IOException e) {

}

}

//Matikan aplikasi

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

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 = fixNomor(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 dapat menerima

sms yang 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

",

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);//memasukkan sms ke

textbook

}

tutupKoneksi();

bukaKoneksi();

} catch (IOException e) {

}

}

public void notifyIncomingMessage(MessageConnection conn) {

if (thread == null) {

done = false;

thread = new Thread(this);

thread.start();

}

}

}

screenshot

diatas ini skrinsut awal saat aplikasi dijalankan. ada 3 menu.

lumayankan kalo untuk belajar. besok di tambah lagi ada menu

inboxnya. sengaja tak jalankan di dua emulatoragar bisa dicoba

buat kirim dan menerima sms. hp putih akan mencoba mengirim sms

ke hp hitam. si putih tadi memilih menu “Tulis Sms”

Sekarang si putih menulis pesan yang akan dikirimnya, si hitam

stand by aja.

Setelah dirasa cukup menulis pesannya, si putih memilih tomb0l

kirim dan memasukan no tujuan punya si hitam. kemudian siputih

menekan tombol kirim.

kita liat setelah si putih menekan tombol kirim ga

berapa lama sihitam menerima sms yang dikirim oleh si putih, dan

di bacanya. Karena ditanyain kabarnya, si hitam ingin membalas

sms dari siputih tadi. maka dia pilih tombol balas. si putih

tentunya diem aja, karena menunggu balesan sms nya.

Si hitam menulis sms balasannya, dah cukup menulis, si hitam

tekan tombol kirim.

si hitam memasukan no tujuan punya si putih, dan dikirim sms

balesannya.