爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1433|回复: 17
收起左侧

关于EF81中文短信收发程序的几点疑问(faterpan大请进)

[复制链接]
发表于 2008-4-13 15:15:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
前天刷了德文版58,昨天装上了中文短信程序。、
玩了一下产生了几点疑问:

1、程序现在还不能直接发送中文短信,英文倒是没问题。
试着发中文出去的话,只能收到“?”。必须从模板才能正确
发送,不知faterpan大找到问题所在没有。

2、J2ME有一个PUSH机制,可以自动启动MIDlet。如果能
在收到SMS时能自动启动中文接收程序多好啊!想必faterpan
大之前就想到了吧?
我自己找了段Demo代码,试验了一下,有些问题。接到短信
后,只会一直响短信提示音,但是看不到程序启动的提示。
不知是否为安全设置的问题。

3、Send SMS界面的输入Phone number的TextField的可输入
文本属性应该改成TextField.PHONENUMBER。有点吹毛求疵
了,其实这个界面现在完全用不到…==
发表于 2008-4-13 19:06:10 | 显示全部楼层
谢谢。
1,EF81系统本身限制了java直接发送Unicode信息,中文和俄文都一样。
2,这个不知道啥原因了。
3,就这样吧。
看得出来,楼主也是高手啊~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 14:16:00 | 显示全部楼层
EF81的Java虚拟机不支持Unicode?!
这个打击太大了… :/lkh

PUSH的机制似乎要对应Port,而一般短信似乎没有指明Port。
所以都会直接扔进系统的收件箱中。

我只有J2ME刚入门的水平,连低手都算不上…
像faterpan大这样能将idea化为code的人,才是真正的高手 ::/\dt
回复 支持 反对

使用道具 举报

发表于 2008-4-15 20:34:38 | 显示全部楼层
不是说"EF81的Java虚拟机不支持Unicode"这个意思。
而是说“java不能直接发送Unicode短信SMS”。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-16 09:39:18 | 显示全部楼层
中文短信是以UCS2的格式编码的,而且有特殊的DCS(编码标志,中文为08)。
我没有看过java自己拼装的短信格式是怎样的。

我想网络下发的SMS,应该和我们发送时同样的格式。
不知faterpan大能把EF81收到的乱码短信的编码从数据库中导出吗?

如果能看到的话,就可以找到问题所在了。

[ 本帖最后由 Kiten 于 2008-4-16 14:43 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-4-16 12:38:28 | 显示全部楼层
高手之间的对啊 呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-16 17:24:20 | 显示全部楼层
自己摸索了一下,发现JSR120包太傻瓜了!
短信编码部分完全透明,根本不知道后台怎么做的… :/lkh

JWT的仿真器倒是正常编码,就是不知道EF81的虚拟机如何了…
回复 支持 反对

使用道具 举报

发表于 2008-4-16 18:24:54 | 显示全部楼层
可以写一个小的测试程序,真机运行试试各种情况
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-21 16:47:50 | 显示全部楼层
把乱码短信保存到SIM卡上看了一下。
发现问题所在了:
纯英文短信一般是采用7bit编码打包的(将最高位舍去),而ef81的JSR120的底层方法
将UCS2的字符也打包,所以造成信息丢失使原编码成了乱码……

解决方法似乎只有改写底层的私有方法,或是调用底层方法自己拼装短信……

EF81仿真器里的JSR120包中,有一个私有的包com.benq,似乎就是实现拼装短信
的底层方法,可是这个东东没有文档手册的话,谁能看得懂啊?!

[ 本帖最后由 Kiten 于 2008-4-21 16:54 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-4-21 17:38:33 | 显示全部楼层
PUSH机制有版本要求吗,我原来也看到说明的,但是没有仔细研究,楼主可否共享一下那个demo的代码呢
自动运行JAVA程序对EF81比较有意义,不然就要研究C编程了
回复 支持 反对

使用道具 举报

发表于 2008-4-21 19:36:40 | 显示全部楼层
还有就是ef81的java的输入法有问题,包括中文和俄文等非英语文字,在TextField和TextBox都不能直接输入。
这个在E81中解决了。
回复 支持 反对

使用道具 举报

发表于 2008-4-21 20:15:46 | 显示全部楼层
对了,哪里有EF81的模拟器加开发包下载?
回复 支持 反对

使用道具 举报

发表于 2008-4-21 20:38:53 | 显示全部楼层
论坛ftp就有啊,如果你能够登录进去的话,呵呵,或者我发给你也行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-21 22:59:31 | 显示全部楼层
回超版:源代码见附件

似乎只要符合MIDP2.0的J2ME平台都支持Push机制。
我对此也不很了解,只知道启动MIDlet套件时要对应相应的端口。
这个Demo中就是对应SMS的5000端口,即只响应(监听)来自此端口的事件。
由JAD中的特殊字段定义。

超版可以结合JWT自带的短信Demo,真机试一下。
在仿真环境下,可以用OTA方式运行。

在牢骚一句,EF81的仿真器真是鸡肋……
毕竟只是个Beta版

PushDemo.rar

9.67 KB, 下载次数: 3

回复 支持 反对

使用道具 举报

发表于 2008-4-21 23:00:20 | 显示全部楼层
很精彩的对话!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-21 23:03:50 | 显示全部楼层
回pan大:
看来EF81的系统在设计时似乎就未考虑非英语国家… :/lkh
回复 支持 反对

使用道具 举报

发表于 2008-4-21 23:20:29 | 显示全部楼层
谢谢,收了研究研究.
我只是有段时间开发了一个J2ME的应用,涉及到TXT文本解析,高/低级用户界面,图片显示缩放,都比较基础,主要面向NOKIA手机,不过都是诺基亚模拟器加西门子真机测试

不用强调我的斑竹身份的,大家在这里平等交流:/ka

原帖由 Kiten 于 2008-4-21 22:59 发表
回超版:源代码见附件

似乎只要符合MIDP2.0的J2ME平台都支持Push机制。
我对此也不很了解,只知道启动MIDlet套件时要对应相应的端口。
这个Demo中就是对应SMS的5000端口,即只响应(监听)来自此端口的事件。
由 ...
回复 支持 反对

使用道具 举报

发表于 2008-4-21 23:21:10 | 显示全部楼层
原帖由 faterpan 于 2008-4-21 20:38 发表
论坛ftp就有啊,如果你能够登录进去的话,呵呵,或者我发给你也行


谢谢PAN,我尝试下载一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-5-17 18:49

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表