《 j2me 程序开发设计(下) 》 专业教程 理论讲解部分 ver 3.1

21
J2ME 程程程程程程 程程 ()程程程程 程程程程程程 Ver 3.1 Ver 3.1

Upload: zenia

Post on 22-Jan-2016

122 views

Category:

Documents


0 download

DESCRIPTION

《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1. 课程概述. WMA 编程 蓝牙编程. 重点. 学习目标. WMA 编程. 1. 掌握无线消息的编程 2. 了解 J2ME 蓝牙编程. 难点. 蓝牙编程. 第 4 章 无线消息和蓝牙编程. 第 4 章 无线消息和蓝牙编程. 4.1 WMA编程. 4.1.1 WMA 概述. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

《 J2ME 程序开发设计(下)》专业教程

理论讲解部分

Ver 3.1Ver 3.1

Page 2: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程

课程概述

WMA编程蓝牙编程

重点

WMA编程

难点

蓝牙编程

学习目标

1. 掌握无线消息的编程2. 了解 J2ME 蓝牙编程

Page 3: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

4.1 WMA 编程

4.1.1 WMA 概述

WMA (无线消息, Wireless Message API )是一个基于 GCF的可选包,因为它所要求的最低 configuration 为 CLDC ,因此它也可以移植到 CDC 上面去。在可发送接收无线消息的诸如手提电话设备上运行的 J2ME 应用程序都可以得到 WMA 的支持。

第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程

Page 4: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 44

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

4.1.2 WMA API 的总体结构

Page 5: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

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()

Page 6: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 66

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

4.1.3 WMA 中的异常

当使用 WMA 的时候,可能会碰到需要处理的异常。比如当创建 MessageConnection 的时候,当应用程序缺乏足够的权限的时候或者平台没有足够的资源的时候,都有可能抛出异常。

详见教材表 4- 2

Page 7: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 77

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

4.1.4 Message 接口•javax.wireless.messaging.Message 是 WMA 中各种消息的基类。所

谓消息,就是通讯双方发送和接收、产生和消费的东西。

•在某种程度上,消息类似于数据报,它有源地址和目的地址、载荷、发送和阻塞方法。 WMA 提供了更多的附加功能,比如支持文本消息和二进制消息,还有异步接收消息的听众 (Listener) 接口。

•WMA 定义了 2 个 Message 子接口: BinaryMessage 和 TextMessage ,而且规范是可扩展的,允许增加更多的消息类型。

•至于消息和相关的控制信息是如何编码来进行传输,这一点 WMA 并不关心,它交给底层的通讯协议负责。

Page 8: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 88

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

4.1.4 Message 接口

•BinaryMessage 接口代表以二进制为内容的消息,包括相应的获取和设置方法。通用的获取和设置消息地址、获取时间戳等方法则继承于 Message 。

•TextMessage 子接口代表以文本为内容的消息,例如文本短消息。 TextMessage 提供方法设置与获取文本内容 (String 对象 ) 。在消息发送和接收之前,底层负责把这个 String 编码或者解码成正确的格式。例如 GSM 7-bit或者 UCS-2 。通用的获取和设置消息地址,获取时间戳等方法则继承于 Message 。

Page 9: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 99

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

4.1.5 MessageConnection 接口

Page 10: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 1010

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

4.1.5 MessageConnection 接口

(MessageConnection)Connector.open("sms://+5121234567:5000");

(MessageConnection)Connector.open("sms://:5000");

创建客户端连接 :

创建服务端连接 :

Page 11: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 1111

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

4.1.6 MessageListener 接口

该接口中只有一个方法 notifyIncomingMessage (),当接收到一个消息的时候,平台就激发该方法。

使用 MessageConnection.setListener() 方法来注册消息听众。

因为平台实现有可能是单线程, notifyIncomingMessage 方法的处理时间要尽可能缩短,最好用单独的线程来处理方法所接收到的消息。

Page 12: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 1212

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

4.1.7 使用 WMA 来发送和接收消息

1 .创建 MessageConnection

public MessageConnection newMessageConnection(String addr)

throws Exception {

return((MessageConnection)Connector.open(addr));

}

Page 13: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

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);

Page 14: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

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);

Page 15: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 1515

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

4.1.7 使用 WMA 来发送和接收消息

4 .接收消息

MessageProcessor 的类,该类实现 Runnable 接口等待和处理消息。

注意: MessageProcessor既支持单次的消息处理,也支持循环的消息处理。

详见教材代码

可以对来源于连接的所有消息使用同一个 MessageProcessor 处理( 这样线程会阻塞直到消息到达,然后处理消息 ) ,

也可以使用一个 MessageListener 对接收到的每一个消息采用一个单消息处理的 Message processor 。

Page 16: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

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");

详见教材代码

Page 17: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 1717

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

4.1 WMA 编程

源代码剖析 : WMADemo项目

Page 18: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

本课小结

本课介绍了 WMA 的体系结构, WMA 的常用编程模式,然后用一个完整的例子演示了 WMA 的使用。

第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程

Page 19: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

小测验

问答题 :1.WMA 中, Message 类的两个子类是 ?

2.MessageConnection 和 GCF 的关系如何 ?

3.如何使用教材中的 MessageProcessor类

第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程

Page 20: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

2006 2020

第第 44 章 无线消息与蓝牙编程章 无线消息与蓝牙编程

小测验

问答题 :1.WMA 中, Message 类的两个子类是 ?答 :TextMessage,BinaryMessage

2.MessageConnection 和 GCF 的关系如何 ?答 :MessageConnection 是 Connection 的子接口,由 Connector打开

3.如何使用教材中的 MessageProcessor 类答 :可以对来源于连接的所有消息使用同一个 MessageProcessor 处理

( 这样线程会阻塞直到消息到达,然后处理消息 ) 也可以使用一个 MessageListener 对接收到的每一个消息采用一个单消息处理的 Message processor 。

Page 21: 《 J2ME 程序开发设计(下) 》 专业教程 理论讲解部分 Ver 3.1

课后作业

【作业 1 】剖析 WMADemo项目,并且把它放到真机上运行

第第 44 章 章 无线消息和蓝牙编程无线消息和蓝牙编程