⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cbsreceive.java

📁 jBuilderX无线应用开发源代码
💻 JAVA
字号:
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;
import java.io.IOException;

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

    Display display;
    Command exitCommand  = new Command("Exit", Command.EXIT, 2);

    //用于向用户显示等待界面
    TextBox waiting;
	//用于向用户显示接收到的消息
    Alert receivedMessage;

    Thread thread;
    //指示处理结束的信号
    boolean done;

    String cbsMessageID;
    MessageConnection cbsconn;
    Message msg;
    
    public CBSReceive() {
        cbsMessageID = "1001";

        waiting = new TextBox("CBS Receive", "", 256, 0);
        waiting.addCommand(exitCommand);
        waiting.setCommandListener(this);

        receivedMessage = new Alert("CBS Received", null, null, AlertType.INFO);
        receivedMessage.setTimeout(5000);
        receivedMessage.setCommandListener(this);
    }

    public void startApp() {
		display = Display.getDisplay(this);
        
        String cbsConnection = "cbs://:" + cbsMessageID;
        if (cbsconn == null) {
			//打开CBS连结
            try {
                cbsconn = (MessageConnection) Connector.open(cbsConnection);
                cbsconn.setMessageListener(this);
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
        }
		//显示等待界面
		waiting.setString("Waiting for CBS with Message ID " +
            cbsMessageID + "...");
        display.setCurrent(waiting);
    }

    //有消息到来时,确保读取消息的线程处于运行状态
    public void notifyIncomingMessage(MessageConnection conn) {
        if (thread == null) {
            done = false;
            thread = new Thread(this);
            thread.start();
        }
    }

    //读取消息的线程
    public void run() {
        try {
            //循环读取消息并更新显示窗口
            while (!done) {
                msg = cbsconn.receive();
                if (msg != null) {
					//处理文本消息
                    if (msg instanceof TextMessage) {
                        receivedMessage.setString(
                            ((TextMessage)msg).getPayloadText());
                    }
					//处理二进制消息
					else {
                        StringBuffer buf = new StringBuffer();
                        byte[] data = ((BinaryMessage)msg).getPayloadData();
                        for (int i = 0; i < data.length; i++) {
                            buf.append(Integer.toHexString((int) data[i]));
                            buf.append(' ');
                        }
                        receivedMessage.setString(buf.toString());
                    }
                    display.setCurrent(receivedMessage);
                }
            }
            cbsconn.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void pauseApp() {
        done = true;
        thread = null;
    }

    public void destroyApp(boolean unconditional) {
        done = true;
        thread = null;
        if (cbsconn != null) {
            try {
                cbsconn.close();
            } catch (IOException e) {
            }
        }
    }
    
    public void commandAction(Command c, Displayable s) {
        try {
			if(c==Alert.DISMISS_COMMAND){
				display.setCurrent(waiting);
			}
            if (c == exitCommand) {
                destroyApp(false);
                notifyDestroyed();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -