- 浏览: 2094944 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
ratlsun:
想请教下uc最新版本在android4.2和4.3版本上是不是 ...
UC浏览器8.3 (for iPhone)设计理念.“無”为而设 -
gly0920sky520123:
很有用哦,谢谢
DOS命令大全(经典收藏) -
chenyu0748:
UC加油,花哥加油~
UC浏览器8.3 (for iPhone)设计理念.“無”为而设 -
cnliuyix:
LZ搞点更有层次的吧,介个一般工程里根本用不到这么简单的。Si ...
Android 设计一个可单选,多选的Demo -
gang4415:
rgz03407@163.com
JSR规范,系统参数测试大全
对于SMS, MMS,sun官方已经出了个jsr-205,jsr-102规范对其进行了完善的支持。至于Email吗,介绍完前两个后,我再把我的想法说出来,大家参考下。
一。前言
学习 Java™ Micro Edition(Java ME)无线消息 API。这个专栏将从几个简单的代码示例开始,随后讨论它为企业开发人员带来的各种机会。
移动电话最常见的一个特性就是消息传递。文本消息或短消息(SMS)自引入之初,已经变得越来越流行。当然,多媒体消息(MMS)又为其增加了图片、声音和视频等多媒体内容。
在 MMS 刚出现时,有些专家预言它会取代 SMS,如果它的价格不是这么高的话,这个预言确实有可能会成为现实。即便如此,这种能在手机之间传递多媒体内容的功能还是渐受青睐。最近手机电子邮件的 成功,意味着未来手机消息传递的主要形式可能是电子邮件,但是要到那一步还有很长的一段路要走。
二。无线消息JSR-205 中定义的无线消息 API(WMA)2.0 是用于无线消息的一组可选 API。WMA 的连接基于通用连接框架,该框架是在基于 CLDC 的 Java ME 架构中进行通信的基础。WMA 2.0 向后兼容 WMA 1.1,添加了对发送和接收多媒体消息的支持。换句话说,无线消息 API 提供了无线通信的高级抽象。它将传输层完全隐藏,因而所要做的工作只是创建消息、发送消息和接收消息。
WMA 支持文本消息、小区广播和多媒体消息。文本消息很简单,大多数人都知道它是什么。SMS 消息极为流行,而且已经成为日常生活的一部分。WMA 支持发送和接收文本消息。发送非常简单:只需定义目标地址和文本,文本被称为净荷(payload)。接收稍微复杂些,因为需要应用程序能够侦听进入的消息。在下面的示例中将看到如何读取进入的消息。
这里介绍下jsr-102规范是针对WMA1.1的。 比较详细的资料可以google下。jsr205规范完全向下兼容,也就是说。你在jsr-102写的程序可以不用任何修改就可以运行在jsr-205规范下。
二进制消息顾名思义就是带有二进制内容的消息。内容可以是要传递给应用程序或者从应用程序传递给其他客户机或服务器的任何内容。多部分消息可以包含多块媒体,例如文本、音频和视频。
小区广播可能是最不为人所知的消息类型。小区广播服务是一种数据服务,在这种服务中,消息由基站广播,由侦听这个基站的每个移动站接收。这个服务是单向的,这意味着 WMA 只能用来接收这类消息。
发送文本消息很简单。步骤如下:
- 设置手机号码(地址)。
- 用
Connector
接口创建MessageConnection
。 - 创建新消息,并把它的类型转换成
TextMessage
。 - 设置净荷。
- 通过调用
send()
方法并向方法传递Message
实例,发送消息。
发送的消息中包含的发送人信息,与正常发送消息时的相同。显示了使用 Java ME WMA 发送消息的代码。
- 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
接口,所以要编写比 更复杂一些的代码,才能让它真正工作。
- 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
。
- 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 消息的传递可以分成:服务器到手机、手机到服务器和手机到手机。
在服务器到手机 消息传递中,CRM 应用程序可以向手机应用程序发送数据,手机应用程序可以接收数据并用对用户友好的方式呈现数据。在手机到服务器 的消息传递中,手机应用程序可以向服务器发送数据(HTTP 连接也可以做这项工作,但 HTTP 连接不可能总是存在)。在手机到手机 的消息传递中,用户可以向好友的手机发送应用程序数据或游戏数据,进行游戏项目交换及其他操作。
上面大部分文字摘自 www.ibm.com/developerworks/cn/java/wi-arch32.html
- public final static void sendTextMessage(String phone, String text)
- throws IOException {
- checkPhoneNumber(phone);
- MessageConnection conn = (MessageConnection) Connector.open("sms://"
- + phone);
- TextMessage msg = (TextMessage) conn
- .newMessage(MessageConnection.TEXT_MESSAGE);
- msg.setPayloadText(text);
- conn.send(msg);
- }
- public final static void sendTextBinary(String phone, byte[] text)
- throws IOException {
- checkPhoneNumber(phone);
- MessageConnection conn = (MessageConnection) Connector.open("sms://"
- + phone);
- BinaryMessage bm = (BinaryMessage) conn
- .newMessage(MessageConnection.BINARY_MESSAGE);
- bm.setAddress(phone);
- bm.setPayloadData(text);
- conn.send(bm);
- }
- private final static void checkPhoneNumber (String phone)
- throws PhoneNumberException{
- if(phone == null
- || phone.equals("")){
- throw new PhoneNumberException("手机号码不能为空!");
- }
- try{
- Integer.parseInt(phone);
- }catch(NumberFormatException n){
- throw new PhoneNumberException("手机号码必须为数据!");
- }
- }
这篇文章会持续更新中,请关注
更新一。对Email的支持:有用过手机支持email浏览是比较痛苦的。就单纯拿我的nokia6630来说吧。设置就一大堆了。搞的我都不想去设置了。其实对于手机浏览email来说我们直需要其中的文本信息就ok了(如果邮件带有附件(一般附件是word,图片等)对于智能机来说,是可以通过安装office来支持浏览的,但很辛苦。
该怎么样来省去那些麻烦的设置呢,我们只需要用户提供一个邮箱地址,密码就可以登录到邮箱跟发邮件了,对于那些协议的设置我们来帮它们做。
比如设计一个自己的邮件转发服务器。一个邮件客户端(j2me)实现,然后客户端的所有请求都是通过我们这边的服务器进行工作,我们可以把那些邮件数据进行压缩,后在传送,这样不仅可以提高速度,而且处理起来也是比较方便的。
过段时间,决定自己实现一个这样的结构。
发表评论
-
汉字点阵字库原理
2011-01-28 10:09 3328一、 汉字编码 1. ... -
如何通过改jad和Manifest把其它手机的java游戏改成N830的
2011-01-25 10:21 1318首先要明确一点,不是所有的游戏都能改的。 <200 ... -
索爱手机IMSI序列号获取
2011-01-20 11:29 1911国际移动用户识别码(I ... -
J2ME数组的复制及连接操作
2010-11-19 10:47 1219public class Arrays { /** ... -
手机 J2ME MIDP 性能测试工具(MIDP BenchMark)
2010-11-19 10:35 1410JavaME Test Suitehttp://www.dog ... -
SocketConnection 参数详细介绍
2010-03-23 11:34 2089请大家看下面的代码: len = is.read(gDat ... -
J2ME使用Socket通过cmwap接入点访问安全HTTPS
2010-03-17 16:36 484这个问题是在我升级J2ME版XHTML浏览器的时候被引入的 ... -
一些很特别的J2ME开源项目(转
2010-03-11 09:43 2304StrutsME 一个轻量级的序列化协议,使J2ME客户端能调 ... -
WMLC 检查charset编码
2009-12-16 15:27 180http://www.iana.org/assignments ... -
Eclipse快捷键
2009-12-01 10:38 1374编辑相关快捷键 Eclipse的编辑功能非常强大,掌 ... -
改善你的J2ME程序界面-使用开源UI库
2009-09-03 16:45 3648J2ME自带UI不是太美观,使用起来也不太方面,为了解决这 ... -
LZW数据压缩算法的原理分析【转】
2009-08-05 19:31 2528转一篇好文章, 原文地址:http://www.cnblog ... -
<a> 标签,target="blank",target="_blank" 的区别。
2009-05-27 13:00 11498在编写html代码的时候。 target="bla ... -
贡献 高效的MIDlet 编程
2009-05-23 15:32 1850从网上找到这本资料。 是E文版的。 大家顺便锻炼下E文 -
How to use pop-up TextBox in Java ME
2009-05-23 13:44 1729Overview One of the Displayabl ... -
How to use freely resizable font in in Java ME
2009-05-23 13:41 1293Contents [hide] 1 Overview 2 ... -
A Simple Ordered Hashtable
2009-05-23 12:08 1516This article illustrates how to ... -
开发NokiaS40系列应用程序初级篇
2009-05-22 18:56 1686本文讲述如何搭建Nokia S40系列手机应用程序的开发环境 ... -
索尼爱立信手机在 J2ME 程序中的字体大小
2009-05-18 16:25 1292之前有朋友问到索尼爱立信手机在 J2me 程序中的字体大小,请 ... -
If-Modified-Since & If-None-Match
2009-05-13 11:01 14478google告诉网站站长:您 ...
相关推荐
游戏API包提供了一系列针对无线设备的游戏开发类。你可以开发你的游戏了。COOL! 第七章“开发无线网络应用程序” 让我们学习如何开发令人激动的联网应用。无线网络在当今的技术下与有线网络相比它的带宽更小、...
本教程首先介绍了j2me 开发体系,然后深入各个MIDP2.0 API,最后是搭建平台的知识。 第一章 “J2ME 技术概述”让你在学习J2ME 以前知道什么是J2ME。本章介绍了J2ME 平 台的体系结构和MIDlet 生命周期的概念。为以后...
本教程首先介绍了 j2me 开发体系,然后深入各个MIDP2.0 API,最后是搭建平台的知识。 第一章 “J2ME 技术概述”让你在学习J2ME 以前知道什么是J2ME。本章介绍了J2ME 平 台的体系结构和MIDlet 生命周期的概念。为以后...
游戏API 包提供了一系列针对无线设备的游戏开发类。你可以开发你的游戏了。COOL! 第七章“开发无线网络应用程序” 让我们学习如何开发令人激动的联网应用。无线网络在当今的技术下与有线网络相比它的带宽更小、延迟...
游戏API包提供了一系列针对无线设备的游戏开发类。你可以开发你的游戏了。COOL! 第七章“开发无线网络应用程序” 让我们学习如何开发令人激动的联网应用。无线网络在当今的技术下与有线网络相比它的带宽更小、...
在信息社会中,手机及其他...在J2ME中还有一个重要的概念是可选包(Optional Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。
这个系统包含了绝对现代化的多媒体和Java设备,支持多种标准,其中包括JSR118, CLDC1.1 (JSR139),MobileMedia (JSR135),3D图像数据(JSR184), JTWI 1.0 c(JSR185)。最后,新版OS还支持SDIO。 2005年二月,英国...
在J2ME中还有一个重要的概念是可选包(Optional Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。 目前,J2ME中有两个最主要...
在J2ME中还有一个重要的概念是可选包(Optional Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。 目前,J2ME中有两个最主要...
在J2ME中还有一个重要的概念是可选包(Optional Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。 目前,J2ME中有两个最主要...
包括无线手持设备、智能卡、通信终端、医疗设备、信息家电(如数字电视、机顶盒 电冰箱)、汽车电子没备等都是近年以来热门的Java应用领域,尤其是手机上的Java应用 程序和Java游戏,更是普及。 4:除了上面提到的,Java...