用Java ME举行无线消息传送[Java编程]
本文“用Java ME举行无线消息传送[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
2006 年 12 月 31 日
学习 Java™ Micro Edition(Java ME)无线消息 API.这个专栏将从几个简单的代码示例开始,随后谈论它为企业开辟人员带来的各种机会.
移动电话最常见的一个特点就是消息传送.文本消息或短消息(SMS)自引入之初,已经变得越来越风行.当然,多媒体消息(MMS)又为其增添了图片、声音和视频等多媒体内容.
在 MMS 刚呈现时,有些专家预言它会代替 SMS,假如它的价钱不是这么高的话,这个预言确切有大概会成为实际.即便如此,这种能在手机之间传送多媒体内容的功效还是渐受爱好.近来手机电子邮件的成功,意味着将来手机消息传送的主要情势大概是电子邮件,但是要到那一步还有很长的一段路要走.
本月,我将谈论 Java ME 无线消息 API.我将从几个简单的编码示例开始,随后谈论它为企业开辟人员带来的各种机会.
无线消息 API
JSR-205 中定义的无线消息 API(WMA)2.0 是用于无线消息的一组可选 API.WMA 的衔接基于通用衔接框架,该框架是在基于 CLDC 的 Java ME 架构中举行通信的底子.WMA 2.0 向后兼容 WMA 1.1,增添了对发送和接纳多媒体消息的支持.换句话说,无线消息 API 供应了无线通信的高级抽象.它将传输层完好躲藏,因而所要做的工作只是成立消息、发送消息和接纳消息.
WMA 支持文本消息、小区广播和多媒体消息.文本消息很简单,大大都人都知道它是什么.SMS 消息极其风行,并且已经成为平常生活的一部份.WMA 支持发送和接纳文本消息.发送非常简单:只需定义目标地址和文本,文本被称为净荷(payload).接纳略微复杂些,因为需求利用程序可以侦听进入的消息.在下面的示例中将看到若何读取进入的消息.
消息内容
二进制消息顾名思义就是带有二进制内容的消息.内容可以是要传送给利用程序大概从利用程序传送给其他客户机或服务器的任何内容.多部份消息可以包含多块媒体,比方文本、音频和视频.
小区广播大概是最不为人所知的消息范例.小区广播服务是一种数据服务,在这种服务中,消息由基站广播,由侦听这个基站的每个移动站接纳.这个服务是单向的,这意味着 WMA 只能用来接纳这类消息.
发送和接纳
发送文本消息很简单.步骤以下:
设置手机号码(地址).
用 Connector 接口成立 MessageConnection.
成立新消息,并把它的范例转换成 TextMessage.
设置净荷.
通过调用 send() 办法并向办法传送 Message 实例,发送消息.
发送的消息中包含的发送人信息,与正常发送消息时的相同.清单 1 显示了利用 Java ME WMA 发送消息的代码.
清单 1. 发送消息
try {
String addr = ?ms://+358401234567?
MessageConnection conn = (MessageConnection) Connector.open(addr);
TextMessage msg =
(TextMessage)conn.newMessage(MessageConnection.TEXT_MESSAGE);
msg.setPayloadText(?his is a test message!?;
conn.send(msg);
} catch (Exception e) {
...
}
接纳文本消息略微复杂,但也不是太复杂.在一个端口上翻开 MessageConnection (在这个示例中是 5432)并从 MessageConnection 读取进入的消息.可以用 instanceof 测试消息的范例.要接纳有消息进入的告诉,利用程序必须实现 MessageListener 接口,所以要编写比 清单 2 更复杂一些的代码,才能让它真正工作.
清单 2. 接纳消息
try {
String addr = ?ms://:5432?
MessageConnection conn = (MessageConnection) Connector.open(addr);
Message msg = null;
while (someExitCondition) {
msg = conn.receive();
if (msg instanceof TextMessage) {
TextMessage tmsg = (TextMessage)msg;
String receivedText = tmsg.getPayloadText();
// respond with the same text with ?hanks.?
tmsg.setPayloadText(?hanks?;
conn.send(tmsg);
} else {
// Received message was not a text message, but e.g. binary
...
}
} // end while
} catch (Exception e) {
...
}
发送二进制消息与发送文本消息很类似.首先需求把数据放在字节数组中,然后成立 MessageConnection(如 清单 3 所示),并成立 BINARY_MESSAGE.
清单 3. 发送二进制消息
try {
String str = "Hello!";
byte[] msg = str.getBytes();
String addr = "sms://+358401234567";
MessageConnection conn = (MessageConnection) Connector.open(addr);
BinaryMessage bm = (BinaryMessage)mc.newMessage
(MessageConnection.BINARY_MESSAGE);
if (url!= null)
bm.setAddress(url);
bm.setPayloadData(msg);
conn.send(bm);
}
catch(Exception e) {
}
假如想学习利用 WMA 编写代码的更多内容,请参阅本文末尾的 参考资料.目前,我把重点放在 WMA 的潜在利用上.
以上是“用Java ME举行无线消息传送[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |