《 j2me 程序开发设计(下) 》 专业教程 理论讲解部分 ver 3.1
DESCRIPTION
《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1. 课程概述. WMA 编程 蓝牙编程. 重点. 学习目标. WMA 编程. 1. 掌握无线消息的编程 2. 了解 J2ME 蓝牙编程. 难点. 蓝牙编程. 第 4 章 无线消息和蓝牙编程. 第 4 章 无线消息和蓝牙编程. 4.1 WMA编程. 4.1.1 WMA 概述. - PowerPoint PPT PresentationTRANSCRIPT
《 J2ME 程序开发设计(下)》专业教程
理论讲解部分
Ver 3.1Ver 3.1
第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程
课程概述
WMA编程蓝牙编程
重点
WMA编程
难点
蓝牙编程
学习目标
1. 掌握无线消息的编程2. 了解 J2ME 蓝牙编程
4.1 WMA 编程
4.1.1 WMA 概述
WMA (无线消息, Wireless Message API )是一个基于 GCF的可选包,因为它所要求的最低 configuration 为 CLDC ,因此它也可以移植到 CDC 上面去。在可发送接收无线消息的诸如手提电话设备上运行的 J2ME 应用程序都可以得到 WMA 的支持。
第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程
2006 44
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.2 WMA API 的总体结构
2006 55
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.2 WMA API 的总体结构接口接口 描述描述 方法方法
Message 基本的消息接口 , 为 BinaryMessage 和 TextMessage 的父接口
getAddress(), getTimestamp(), setAddress()
BinaryMessage Message 的子接口,提供二进制内容的访问方法
getPayloadData(), setPayloadData()
TextMessage Message 的子接口,提供文本内容的访问方法
getPayloadText(), setPayloadText()
MessageConnection 为 GCF 中 Connection的子接口,提供消息工厂,及发送接收消息的方法
newMessage(), receive(), send(), setMessageListener(), numberOfSegments()
MessageListener 定义 Listener 接口,实现消息对象的异步通知
notifyIncomingMessage()
2006 66
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.3 WMA 中的异常
当使用 WMA 的时候,可能会碰到需要处理的异常。比如当创建 MessageConnection 的时候,当应用程序缺乏足够的权限的时候或者平台没有足够的资源的时候,都有可能抛出异常。
详见教材表 4- 2
2006 77
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.4 Message 接口•javax.wireless.messaging.Message 是 WMA 中各种消息的基类。所
谓消息,就是通讯双方发送和接收、产生和消费的东西。
•在某种程度上,消息类似于数据报,它有源地址和目的地址、载荷、发送和阻塞方法。 WMA 提供了更多的附加功能,比如支持文本消息和二进制消息,还有异步接收消息的听众 (Listener) 接口。
•WMA 定义了 2 个 Message 子接口: BinaryMessage 和 TextMessage ,而且规范是可扩展的,允许增加更多的消息类型。
•至于消息和相关的控制信息是如何编码来进行传输,这一点 WMA 并不关心,它交给底层的通讯协议负责。
2006 88
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.4 Message 接口
•BinaryMessage 接口代表以二进制为内容的消息,包括相应的获取和设置方法。通用的获取和设置消息地址、获取时间戳等方法则继承于 Message 。
•TextMessage 子接口代表以文本为内容的消息,例如文本短消息。 TextMessage 提供方法设置与获取文本内容 (String 对象 ) 。在消息发送和接收之前,底层负责把这个 String 编码或者解码成正确的格式。例如 GSM 7-bit或者 UCS-2 。通用的获取和设置消息地址,获取时间戳等方法则继承于 Message 。
2006 99
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.5 MessageConnection 接口
2006 1010
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.5 MessageConnection 接口
(MessageConnection)Connector.open("sms://+5121234567:5000");
(MessageConnection)Connector.open("sms://:5000");
创建客户端连接 :
创建服务端连接 :
2006 1111
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.6 MessageListener 接口
该接口中只有一个方法 notifyIncomingMessage (),当接收到一个消息的时候,平台就激发该方法。
使用 MessageConnection.setListener() 方法来注册消息听众。
因为平台实现有可能是单线程, notifyIncomingMessage 方法的处理时间要尽可能缩短,最好用单独的线程来处理方法所接收到的消息。
2006 1212
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.7 使用 WMA 来发送和接收消息
1 .创建 MessageConnection
public MessageConnection newMessageConnection(String addr)
throws Exception {
return((MessageConnection)Connector.open(addr));
}
2006 1313
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.7 使用 WMA 来发送和接收消息
2.创建,发送文本消息
TextMessage tmsg =(TextMessage)mc.newMessage (MessageConnection.TEXT_MESSAGE);
if (url!= null)
tmsg.setAddress(url);
tmsg.setPayloadText(msg);
mc.send(tmsg);
2006 1414
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.7 使用 WMA 来发送和接收消息
3 .创建,发送二进制消息
BinaryMessage bmsg =
(BinaryMessage)mc.newMessage
(MessageConnection.BINARY_MESSAGE);
if (url!= null)
bmsg.setAddress(url);
bmsg.setPayloadData(msg);
mc.send(bmsg);
2006 1515
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.7 使用 WMA 来发送和接收消息
4 .接收消息
MessageProcessor 的类,该类实现 Runnable 接口等待和处理消息。
注意: MessageProcessor既支持单次的消息处理,也支持循环的消息处理。
详见教材代码
可以对来源于连接的所有消息使用同一个 MessageProcessor 处理( 这样线程会阻塞直到消息到达,然后处理消息 ) ,
也可以使用一个 MessageListener 对接收到的每一个消息采用一个单消息处理的 Message processor 。
2006 1616
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
4.1.7 使用 WMA 来发送和接收消息
4 .接收消息
MessageConnection 的 numberOfSegments() 方法来获取消息分批发送的次数
还可以通过获取 wireless.messaging.sms.smsc系统属性来获取短信息服务中心的地址:
String smsc = System.getProperty("wireless.messaging.sms.smsc");
详见教材代码
2006 1717
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
4.1 WMA 编程
源代码剖析 : WMADemo项目
本课小结
本课介绍了 WMA 的体系结构, WMA 的常用编程模式,然后用一个完整的例子演示了 WMA 的使用。
第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程
小测验
问答题 :1.WMA 中, Message 类的两个子类是 ?
2.MessageConnection 和 GCF 的关系如何 ?
3.如何使用教材中的 MessageProcessor类
第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程
2006 2020
第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程
小测验
问答题 :1.WMA 中, Message 类的两个子类是 ?答 :TextMessage,BinaryMessage
2.MessageConnection 和 GCF 的关系如何 ?答 :MessageConnection 是 Connection 的子接口,由 Connector打开
3.如何使用教材中的 MessageProcessor 类答 :可以对来源于连接的所有消息使用同一个 MessageProcessor 处理
( 这样线程会阻塞直到消息到达,然后处理消息 ) 也可以使用一个 MessageListener 对接收到的每一个消息采用一个单消息处理的 Message processor 。
课后作业
【作业 1 】剖析 WMADemo项目,并且把它放到真机上运行
第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程