Senin, 10 Juni 2013

Kirim dan Terima SMS melalui Handphone yang menggunakan Program Java



Program Berikut ini adalah Kirim dan Terima SMS melalui Handphone yang menggunakan Program Java, Untuk mencobanya adalah dengan menginstallkan hasil kod Jar nya ke masing-masing handphone, dalam hal ini menggunakan 2 handphone yaitu 1 untuk penerima dan 1 untuk pengirim SMS tersebut. Sebelumnya ketikkan program berikut ini ke Texpad lalu simpan dan open projek menggunakan Sun Java. SELAMAT MENCOBA :D

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

/**
* @author AJI
* @see http://twitter.com/AJI
*/
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 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 buatan saya, " +
     "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();
}
}
}
Untuk mendownloadnya silahkan klik link berikut ini  http://www.4shared.com/office/BAHBlerm/Kirim_dan_Terima_SMS_melalui_H.html

Aplikasi Login User Dengan Java

 
Berikut adalah langkah-langkah untuk membuat Form Login User sederhana menggunakan Sun Java (TM) Wireless Toolkit 2.5.2.
Pertama pastikan komputer anda sudah terinstal Java JDK-nya dan Sun Java (TM) Wireless Toolkit 2.5.2 lalu ketikkan code source di TextPad dan simpan dengan nama  LoginForm.java. Nah berikut source code nya :

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;

public class LoginForm extends MIDlet implements CommandListener{
  private Display display;
  private TextField userName,password;
  public Form form;
  private Command login,cancel;
  private Image img, imge, img2;
     
  public LoginForm() {
    form = new Form("Sign in");
    userName = new TextField("LoginID:", "", 30, TextField.ANY);
    password = new TextField("Password:", "", 30, TextField.PASSWORD);
    cancel = new Command("Cancel", Command.CANCEL, 2);
    login = new Command("Login", Command.OK, 2);
    try{
      img = Image.createImage("/logo.png");
      imge = Image.createImage("/gagal.png");
      img2 = Image.createImage("/sukses.png");
    }catch(Exception e){
      System.out.println(e.getMessage());
    }   
  }

   public void startApp() {
    display = Display.getDisplay(this);
    try{form.append(img);}catch(Exception e){}
    form.append(userName);
    form.append(password);
    form.addCommand(cancel);
    form.addCommand(login);
    form.setCommandListener(this);
    display.setCurrent(form);
  }

  public void pauseApp() {}

  public void destroyApp(boolean unconditional) {
    notifyDestroyed();
  }

  public void validateUser(String name, String password) {
    if (name.equals("AliFirdaus") && password.equals("Polsri")) {
      showMsg();
    } else {
      tryAgain();
    }
  } 

  public void showMsg() {
    Alert success = new Alert("Login Successfully",
    "Login berhasil!", img2, AlertType.INFO);
    success.setImage(img2);
    userName.setString("");
    password.setString("");
    display.setCurrent(success, form);   
  }

  public void tryAgain() {
    Alert error = new Alert("Login salah", "coba lagi", imge, AlertType.ERROR);
    error.setTimeout(900);
    error.setImage(imge);
    userName.setString("");
    password.setString("");
    display.setCurrent(error, form);
  }
 
  public void commandAction(Command c, Displayable d) {
    String label = c.getLabel();
    if(label.equals("Cancel")) {
      destroyApp(true);
    } else if(label.equals("Login")) {
      validateUser(userName.getString(), password.getString());
    }
  }
}


Kedua, jika sudah selesai mengetik program diatas, sekarang waktu nya kita beralih ke Sun Java (TM) Wireless Toolkit 2.5.2. Klik New Project kemudian pada Project Name dan MIDlet class name isikan LoginForm.

Ketiga, pindahkan program AplikasiNilai.java yang telah kita simpan tadi ke C:\Documents and Settings\Juju\j2mewtk\2.5.2\apps\LoginForm\src.

Setelah itu pada Sun Java (TM) Wireless Toolkit 2.5.2, pilih Open Project dan buka project LoginForm, lalu Build dan Run.
                                                                
   Tampilan LoginForm


Tampilan Sign In 


Login Berhasil
Selanjutnya adalah membuat Package. Untuk menjalankan aplikasi ini di handphone kita harus membuat file .jad , file inilah yang nantinya akan kita pindahkan ke handphone dan kita instal di handphone.
Langkah-langkah pembuatan file .jad adalah sebagai berikut:

  1. pilih Project
  2. pilih Package
  3. pilih Create Package
Maka file .jad akan tercipta, dan file tersebut disimpan di dalam direktori bin.
Untuk Mendownloadnya Silahkan Klik Link Berikut Ini,. http://www.4shared.com/office/XRYO5A03/Aplikasi_Login_User_Dengan_Jav.html