📄 cbsreceive.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 + -