Belajar membuat aplikasi sms J2ME di handphone

Sebelum mempelajari sesuatu biasanya karena seseorang itu ingin bisa sesuatu juga, contoh belajar nyetir mobil agar nyetir mobil dan syukur syukur agar bisa beli mobil, belajar komputer dan internetan agar bisa FS-an, belajar pemrograman JAVA karena agar bisa dapet nilai yang bagus dari pak Dosen…hayah ga nyambung kabeh. sudah lupakan contoh contoh tadi.



Dulu awal aku belajar J2ME karena ingin bisa membuat aplikasi di handphone yang bisa kirim sms. Walopun udah sering belajar tapi ternyata masih sedikit kebisaanku dalam hal ini, tapi jangan putus asa, aku harus giat belajar…. oya bagi yang baru belajar sama seperti aku dibawah ini nanti ada source code aplikasi untuk kirim dan terima sms. masih sederhana sih. makanya ini hanya bagi yang baru belajar aja, liat aja sesuai dengan judulnya kan. Bagi yang udah master mohon koreksi ya jika ada yang salah. trus kalo ada yang mau belajar dan mendiskusikan source code yang aku buat ini, semoga ini bisa menjadi ajang buat diskusi. dan dibikin asik aja.



Ok. source codenya (beserta penjelasannya, walopun gak informatif banget tp lumayan lah) adalah :







import java.util.*;

import java.io.IOException;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import javax.wireless.messaging.*;

import javax.microedition.midlet.*;



/**

* @author MasWawa

* @see http://www.maswawa.web.id

*/

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; //macem macem 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 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, silakan 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 dulu

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

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 dengan perintah dibawah ini

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) { //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) {

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



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 sendiri",

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();

}

}

}





setelah source code nya, biar afdol tak kasih juga scrinsutnya:

skrinsut1

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 emulator agar bisa dicoba buat kirim dan menerima sms. hp putih akan mencoba mengirim sms ke hp hitam. si putih tadi memilih menu “Tulis Sms”

skrinsut2

Sekarang si putih menulis pesan yang akan dikirimnya, si hitam stand by aja.

skrinsut3

Setelah dirasa cukup menulis pesannya, si putih memilih tomb0l kirim dan memasukan no tujuan punya si hitam. kemudian siputih menekan tombol kirim.

skrinsut4

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.

skrinsut5

Si hitam menulis sms balasannya, dah cukup menulis, si hitam tekan tombol kirim.

skrinsut6

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

skrinsut7

Alhammdulillah sms balesan dari si hitam udah masuk ke si putih dan sedang dibaca oleh si putih.

Nah begitu seterusnya si putih kemudian membalas lagi, si hitam juga. mereka saling berbalas sms sampe pulsa mereka habis, selain itu juga jempol mereka udah capek ngetik sms. ceritanya sampe disini dulu.

oya yang mau aplikasi jadinya program kita diatas tadi download disini.

Nah lo menu yang lain kok ga di peragakan juga? gak ah, bisa coba sendiri, namanya belajar kok jadi harus banyak coba coba sendiri kan?

diatas tadi sekilas source code untuk kirim dan terima sms dengan j2me, besok aplikasi diatas ditambah dengan menu inbox, outbox, trus menu settings…udah deh kebanyakan. untuk menyimpan Sms di inbox dan outbox enaknya pake database aja nih. pake RMS tentunya. jadi belajar dulu RMS yuk. yukk…. :D

Sekian semoga bermanfaat.

SUBSCRIBE TO OUR NEWSLETTER

Seorang Blogger pemula yang sedang belajar

0 Response to "Belajar membuat aplikasi sms J2ME di handphone"

Posting Komentar