Jumat, 17 April 2015

Recieve Message

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package triana.novi.midlet;

import java.io.IOException;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.wireless.messaging.Message;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.MessageListener;
import javax.wireless.messaging.TextMessage;

public class RecieveMessage extends MIDlet
        implements CommandListener, Runnable, MessageListener {

    private Display display;
    private Alert alert;
    private TextBox tfPesan;
    private Thread thread;
    private MessageConnection conn;
    private Message pesan;
    private String[] daftarKoneksi;
    private boolean selesaiProses;
    private String port;
    private final Command cmdKeluar = new Command("Keluar", Command.EXIT, 1);

    public RecieveMessage() {
        port = getAppProperty("Port-SMS");
        display = Display.getDisplay(this);

        alert = new Alert("Terima SMS");
        alert.setTimeout(Alert.FOREVER);
        alert.addCommand(cmdKeluar);
        alert.setCommandListener(this);

        tfPesan = new TextBox(null, null, 500, TextField.ANY);
        tfPesan.addCommand(cmdKeluar);
        tfPesan.setCommandListener(this);
    }

    public void startApp() {
        String alamatKoneksi = "sms://:" + port;
        if (conn == null) {
            try {
                conn = (MessageConnection) Connector.open(alamatKoneksi);
                conn.setMessageListener(this);
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
        }
        daftarKoneksi = javax.microedition.io.PushRegistry.listConnections(true);
        if (daftarKoneksi == null || daftarKoneksi.length== 0) {
            alert.setString("Menunggu SMS pada port" + port + "...");
        }
        startNewThread();

        display.setCurrent(alert);
    }

    public void pauseApp() {
        selesaiProses = true;
        thread = null;

    }

    public void destroyApp(boolean unconditional) {
        selesaiProses = true;
    thread = null;
        if (conn != null) {
            try {
                conn.close();
            } catch (IOException e) {
            }
        }
    }

    public void commandAction(Command c, Displayable s) {
        if (c == cmdKeluar || c == Alert.DISMISS_COMMAND) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
    // method ini ada karena kia mengimplementasikan
    // interface Runnable

    public void run() {
        try {
            pesan = conn.receive();
            if (pesan != null) {
                String alamatPengirim = pesan.getAddress();
                tfPesan.setTitle("Pesan dari:" + alamatPengirim.substring(6));
                if (pesan instanceof TextMessage) {
                    TextMessage pesanTeks = (TextMessage) pesan;
                    tfPesan.setString(pesanTeks.getPayloadText());
                }
                display.setCurrent(tfPesan);
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }

    // method ini ada karena kita mengimplementasikan
    // interface MessageListener
    public void notifyIncomingMessage(MessageConnection conn) {
        if (thread == null) {
            startNewThread();

        }
    }

    public void startNewThread() {
        selesaiProses = false;
        thread = new Thread(this);
        thread.start();
    }
}

Tidak ada komentar:

Posting Komentar