javameapi文档:Java ME 无线消息 API

  移动电话最常见个特性就是消息传递文本消息或短消息(SMS)自引入的初已经变得越来越流行当然多媒体消息(MMS)又为其增加了图片、声音和视频等多媒体内容

  在 MMS 刚出现时有些专家预言它会取代 SMS如果它价格不是这么高这个预言确实有可能会成为现实即便如此这种能在手机的间传递多媒体内容功能还是渐受青睐最近手机电子邮件成功意味着未来手机消息传递主要形式可能是电子邮件但是要到那步还有很长段路要走

  本月我将讨论 Java ME 无线消息 API我将从几个简单编码举例开始随后讨论它为企业开发人员带来各种机会

  无线消息 API

  JSR-205 中定义无线消息 API(WMA)2.0 是用于无线消息组可选 APIWMA 连接基于通用连接框架该框架是在基于 CLDC Java ME 架构中进行通信基础WMA 2.0 向后兼容 WMA 1.1添加了对发送和接收多媒体消息支持换句话说无线消息 API 提供了无线通信高级抽象它将传输层完全隐藏因而所要做工作只是创建消息、发送消息和接收消息

  WMA 支持文本消息、小区广播和多媒体消息文本消息很简单大多数人都知道它是什么SMS 消息极为流行而且已经成为日常生活部分WMA 支持发送和接收文本消息发送非常简单:只需定义目标地址和文本文本被称为净荷(payload)接收稍微复杂些需要应用能够侦听进入消息在下面举例中将看到如何读取进入消息

  发送和接收

  发送文本消息很简单步骤如下:

  设置手机号码(地址)

  用 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.Message(MessageConnection.TEXT_MESSAGE);
  msg.PayloadText(?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;
   (msg instanceof TextMessage) {
  TextMessage tmsg = (TextMessage)msg;
  String receivedText = tmsg.getPayloadText;
  // respond with the same text with ?hanks.?
  tmsg.PayloadText(?hanks?;
  conn.send(tmsg);
  } {
  // Received message was not a text message, but e.g. binary
  ...
  }
  } // end while
  } catch (Exception e) {
  ...
  }


  发送 2进制消息和发送文本消息很相似首先需要把数据放在字节然后创建 MessageConnection(如 清单 3 所示)并创建 BINARY_MESSAGE
  清单 3. 发送 2进制消息


  try {
  String str = "Hello!";
   msg = str.getBytes;
  String addr = "sms://+358401234567";
  MessageConnection conn = (MessageConnection) Connector.open(addr);
  BinaryMessage bm = (BinaryMessage)mc.Message
  (MessageConnection.BINARY_MESSAGE);
   (url!= null)
  bm.Address(url);
  bm.PayloadData(msg);
  conn.send(bm);
  }
  catch(Exception e) {
  }


  如果想学习使用 WMA 编写代码更多内容请参阅本文末尾 参考资料现在我把重点放在 WMA 潜在应用上

  无尽可能性

  用消息能做什么呢?从 Java ME 应用发送文本消息确实很酷 —— 可以按自己想法定制用户界面和用途 —— 但它还算不上是招人喜爱应用在让这种消息传递尽可能简单便捷方面Nokia 和 Sony-Ericsson 已经投入了大量时间和金钱

  商业应用和预定义文本信息为其带来了真正优势例如在商业应用中很可能会出现这样些情况:GPRS、WLAN 或者其他基于 IP 协议不可用或不可靠;使用是基于 SMS 传统接口;操作也还是带有 SMS 接口设备此时您就可以用文本消息作为传输协议比如在某种场景下您可以让服务器(例如 CRM 服务器)发送带有最新销售数据文本消息然后手机应用可以确认来自业务服务消息并用图表或者其他您喜欢方式呈现数据(对于更大量数据当然用 HTTP 或数据报会更好)

  也可以在游戏编程中同时使用文本和 2进制消息例如个玩家可以把特定于游戏些内容(例如获得级别、工具或点数)发送给玩同手机游戏好友好友应用会接收消息并打开发送内容当然 2进制数据也可以用于商业应用

  多媒体消息在应用或服务中还不太流行但是它们确实为游戏领域提供了些有趣机会例如可以把游戏屏幕快照发送给好友好友能以多媒体消息形式接收快照而不依赖任何特定应用以图片形式发送天气预报是利用 MMS 方便性个便利服务

   3类消息传递

  WMA 消息传递可以分成:服务器到手机、手机到服务器和手机到手机

  在服务器到手机 消息传递中CRM 应用可以向手机应用发送数据手机应用可以接收数据并用对用户友好方式呈现数据在手机到服务器 消息传递中手机应用可以向服务器发送数据(HTTP 连接也可以做这项工作但 HTTP 连接不可能总是存在)在手机到手机 消息传递中用户可以向好友手机发送应用数据或游戏数据进行游戏项目交换及其他操作

  结束语

  在本文中我介绍了使用 Java ME WMA 进行无线消息传递相关内容我提供了些基本发送和接收举例并讨论了无线消息传递些使用方式WMA 支持发送和接收文本消息、 2进制消息和多媒体消息支持接收小区广播消息所有这些消息类型为游戏开发人员和商业应用开发人员提供了许多机会

  消息传递(电子邮件、IM)已经证明是 Internet 日常应用重要部分文本消息已经成为了手机用户体验至关重要部分WMA 简单性让它有幸成为了无线应用开发人员工具包中

  消息内容

   2进制消息顾名思义就是带有 2进制内容消息内容可以是要传递给应用或者从应用传递给其他客户机或服务器任何内容多部分消息可以包含多块媒体例如文本、音频和视频

  小区广播可能是最不为人所知消息类型小区广播服务是种数据服务在这种服务中消息由基站广播由侦听这个基站每个移动站接收这个服务是单向这意味着 WMA 只能用来接收这类消息
Tags:  javaeeapi javaapi中文 javaapi javameapi文档

延伸阅读

最新评论

发表评论