langsung ajah deh di simak di bawah ini:
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 :
001.
import
java.util.*;
002.
import
java.io.IOException;
003.
import
javax.microedition.io.*;
004.
import
javax.microedition.lcdui.*;
005.
import
javax.wireless.messaging.*;
006.
import
javax.microedition.midlet.*;
007.
008.
/**
009.
* @author MasWawa
010.
* @see
011.
*/
012.
public
class
smsKu
extends
MIDlet
implements
CommandListener, Runnable,
013.
MessageListener {
014.
015.
Display display;
016.
Form form;
017.
List menuList;
//list untuk menu awal
018.
Command exitCom, replyCom, backCom, clrCom, sendCom;
//macem macem command yg digunakan
019.
TextBox textSmsMasuk, textSmsKeluar;
//tempat untuk text sms yg masuk dan yg mau dikirim
020.
TextField textNo;
//untuk tempat memasukan no tujuan
021.
String port, isiSmsKeluar;
//port dan isi sms
022.
Thread thread;
023.
String[] connections;
024.
boolean
done;
025.
MessageConnection smsconn;
026.
Message msg;
027.
028.
public
smsKu() {
029.
display = Display.getDisplay(
this
);
030.
form =
new
Form(
"sms-an Yuk"
);
031.
exitCom =
new
Command(
"keluar"
, Command.EXIT,
1
);
032.
replyCom =
new
Command(
"balas"
, Command.SCREEN,
1
);
033.
backCom =
new
Command(
"Kembali"
, Command.BACK,
3
);
034.
clrCom =
new
Command(
"Hapus Tulisan"
, Command.OK,
2
);
035.
sendCom =
new
Command(
"Kirim"
, Command.OK,
1
);
036.
menuList =
new
List(
"Menu sms Ku"
, List.IMPLICIT);
037.
port =
"4321"
;
//port yang aku gunakan, silakan ganti sesuai keinginan masing masing
038.
textSmsMasuk =
new
TextBox(
null
,
null
,
500
, TextField.ANY);
039.
textSmsKeluar =
new
TextBox(
"Silakan Menulis Sms"
,
null
,
040.
500
, TextField.ANY);
041.
textNo =
new
TextField(
"Masukan Nomor Tujuan"
,
""
,
042.
15
, TextField.PHONENUMBER);
043.
}
044.
045.
public
void
startApp() {
046.
bukaKoneksi();
//disini membuka koneksi untuk siap menerima sms masuk
047.
menu();
// bikin tampilan menu awal
048.
}
049.
050.
public
void
pauseApp() {
051.
}
052.
053.
public
void
destroyApp(
boolean
unconditional) {
054.
055.
//sebelum aplikasinya keluar ato mati koneksi ditutup dulu
056.
done =
true
;
057.
thread =
null
;
058.
if
(smsconn !=
null
) {
059.
try
{
060.
smsconn.close();
061.
}
catch
(IOException e) {
062.
}
063.
}
064.
065.
//disini mati deh aplikasi kita
066.
notifyDestroyed();
067.
}
068.
069.
public
void
menu() {
//membuat menu awal untuk sementara ini baru ada 3 menu dulu
070.
menuList.append(
"Tulis Sms"
,
null
);
//1. menu tulis sms baru
071.
menuList.append(
"about"
,
null
);
//2. menu about (gak penting sih sebenarnya)
072.
menuList.append(
"Keluar"
,
null
);
//3. menu untuk keluar aplikasi
073.
menuList.addCommand(exitCom);
//add command keluar
074.
menuList.setCommandListener(
this
);
075.
display.setCurrent(menuList);
076.
}
077.
078.
public
void
tulisSms() {
//membuat textbox untuk menulis sms baru
079.
textSmsKeluar.addCommand(sendCom);
//add command untuk kirim
080.
textSmsKeluar.addCommand(clrCom);
// add command untuk clear text
081.
textSmsKeluar.addCommand(backCom);
//add command untuk kembali kemenu awal
082.
textSmsKeluar.setCommandListener(
this
);
083.
display.setCurrent(textSmsKeluar);
084.
}
085.
086.
public
void
masukNo() {
//disini untuk memasukan nomor tujuan yang mau dikirimi sms
087.
form.setTitle(
"Sms Siap dikirim"
);
//udah taukan yang ini?
088.
form.append(textNo);
//menambahkan textField untuk nomor tujuan
089.
form.addCommand(backCom);
//menambahkan command untuk kembali ke menu awal
090.
form.addCommand(sendCom);
//menambahkan command untuk mengirim
091.
form.setCommandListener(
this
);
092.
display.setCurrent(form);
093.
}
094.
095.
public
void
kirim() {
//disini sms yang udah ditulis dikirim dengan perintah dibawah ini
096.
new
Thread(
new
Runnable() {
097.
//perhatiin ya
098.
public
void
run() {
099.
try
{
100.
String isiSms = isiSmsKeluar;
101.
String noTujuan = textNo.getString();
102.
String address =
"sms://"
+ noTujuan +
":"
+ port;
103.
MessageConnection smsConnKir =
null
;
104.
Message isiSmsNya =
null
;
105.
smsConnKir = (MessageConnection) Connector.open(address);
106.
TextMessage txtmessage =
107.
(TextMessage) smsConnKir.newMessage(MessageConnection.TEXT_MESSAGE);
108.
txtmessage.setAddress(address);
109.
txtmessage.setPayloadText(isiSms);
110.
isiSmsNya = txtmessage;
111.
smsConnKir.send(isiSmsNya);
112.
113.
}
catch
(Throwable t) {
114.
t.printStackTrace();
115.
}
116.
}
117.
}).start();
118.
}
119.
120.
public
void
terima(String isi, String no, Date tgl) {
//ini untuk tempat membaca sms yang masuk
121.
String nonya = fixNomer(no);
122.
textSmsMasuk =
new
TextBox(
"Sms dari:"
+ nonya +
" "
+ tgl, isi,
123.
isi.length(), TextField.ANY);
124.
textSmsMasuk.addCommand(replyCom);
125.
textSmsMasuk.addCommand(exitCom);
126.
textSmsMasuk.setCommandListener(
this
);
127.
display.setCurrent(textSmsMasuk);
128.
}
129.
130.
public
void
bukaKoneksi() {
//membuka koneksi agar bisa menerima sms yg masuk
131.
String smsConnection =
"sms://:"
+ port;
132.
done =
true
;
133.
thread =
null
;
134.
135.
try
{
136.
smsconn = (MessageConnection) Connector.open(smsConnection);
137.
smsconn.setMessageListener(
this
);
138.
}
catch
(IOException ioe) {
139.
ioe.printStackTrace();
140.
}
141.
142.
connections = PushRegistry.listConnections(
true
);
143.
144.
done =
false
;
145.
thread =
new
Thread(
this
);
146.
thread.start();
147.
}
148.
149.
public
void
tutupKoneksi() {
//untuk menutup koneksi sms
150.
try
{
151.
smsconn.close();
152.
}
catch
(IOException e) {
153.
}
154.
}
155.
156.
public
String fixNomer(String no) {
157.
//dari format no gini "sms://+6285XXXX" jadi "+6285XXX" gitu fungsinya disini itu
158.
159.
String hs =
null
;
160.
hs = no.substring(
6
, no.length());
161.
return
hs;
162.
}
163.
164.
public
void
commandAction(Command c, Displayable d) {
165.
if
(c == exitCom) {
166.
destroyApp(
true
);
167.
}
168.
if
(d == menuList) {
169.
if
(menuList.isSelected(
0
)) {
170.
tulisSms();
171.
}
else
if
(menuList.isSelected(
1
)) {
172.
Alert about =
new
Alert(
"About"
,
"Aplikasi SMS buatan sendiri"
,
173.
null
, AlertType.INFO);
174.
display.setCurrent(about);
175.
}
else
if
(menuList.isSelected(
2
)) {
176.
destroyApp(
true
);
177.
}
178.
}
179.
if
(d == textSmsKeluar) {
180.
if
(c == sendCom) {
181.
form.deleteAll();
182.
masukNo();
183.
}
else
if
(c == clrCom) {
184.
textSmsKeluar.setString(
""
);
185.
}
else
if
(c == backCom) {
186.
display.setCurrent(menuList);
187.
}
188.
}
189.
if
(d == textSmsMasuk) {
190.
if
(c == exitCom) {
191.
display.setCurrent(menuList);
192.
}
else
if
(c == replyCom) {
193.
tulisSms();
194.
}
195.
}
196.
if
(d == form) {
197.
if
(c == backCom) {
198.
form.deleteAll();
199.
display.setCurrent(textSmsKeluar);
200.
}
else
if
(c == sendCom) {
201.
isiSmsKeluar = textSmsKeluar.getString();
202.
textSmsKeluar.setString(
""
);
203.
kirim();
204.
}
205.
}
206.
}
207.
208.
public
void
run() {
//untuk menerima sms yang masuk
209.
try
{
210.
msg = smsconn.receive();
211.
String senderAddress = msg.getAddress();
212.
Date waktuSms = msg.getTimestamp();
213.
if
(msg
instanceof
TextMessage) {
214.
String isiSmsMasuk = ((TextMessage) msg).getPayloadText();
215.
terima(isiSmsMasuk, senderAddress, waktuSms);
//ini memasukan sms yg diterima ke textbox
216.
}
217.
tutupKoneksi();
218.
bukaKoneksi();
219.
}
catch
(IOException e) {
220.
}
221.
}
222.
223.
public
void
notifyIncomingMessage(MessageConnection conn) {
224.
if
(thread ==
null
) {
225.
done =
false
;
226.
thread =
new
Thread(
this
);
227.
thread.start();
228.
}
229.
}
230.
}
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”
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.
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.
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 y...
hihihihi
Sekian semoga bermanfaat.
0 komentar:
Posting Komentar