【蛙蛙推荐】手机通讯录实现

俺这个程序的服务端也可以用asp.net写,也当.net文章发了吧,讲的都是思路,和技术关系不太大,发首页和大家分享一下思路。
【目标】
周末学了学j2me,做了一个手机通讯录,只是演示性的,没有无忧通讯录或蜘蛛通讯录那么强大,但核心的功能都实现了.有时候我们不小心丢了手机,换了个新的手机,以前的联系人都没了,还得手输一遍,如果我们丢手机之前把手机上的通讯录上传到服务器上,换了新手机就可以直接把联系人列表下载下来。还有新开通了飞信业务,可是里面一个好友也没有,如果能把手机上的联系人都导入到飞信那该多好,可惜飞信现在没有这功能。
好,我这个程序就是来解决你这两个问题的。
【思路】
大多手机都有kjava环境,而jsr75里定义了一些存取本地资源(手机保存的图片,日历,代办事项,通讯录等)的api,大多手机也都支持这个标准,就连诺基亚四五百块钱的机子都支持,只不过各手机厂商实现的不太一样而已。j2me又有一些访问网络的api,http,socket,串口,红外都有所支持。好,客户端这里,运行环境(kjava),PIM api(jsr75),通信api(httpconnection)都有了。至于服务端,只要能提供http服务就行了,asp.net,servlet,php,asp都行,我们就用asp了。只要让客户端用pim api读出通讯录,转换成格式化的字符串(序列化)用httpconnection post给服务端,服务端收到请求,解析字符串转换成姓名和电话号码列表(解序列化)然后存入数据库就OK了。这只是上传通讯录,下载也简单,客户端向服务端发送一个get请求,服务端把存在数据库里的通讯录序列化后返回给客户端,客户端解析网络流,转换成联系人名单,用pim api保存到手机就OK了。
思路就是这样的,但一些细节就具体看代码吧,比如说中文的问题,有些手机默认没有打开读取或者保存通讯录的权限,j2me没有split,urlencode函数,replace函数只能替换字符不能替换字符串,使用进度条增强手机客户端的上传下载通讯录时的体验等。
值得一提的是,有些手机直接支持SyncML,可以和Sync4J服务器直接同步通讯录,日历等。我这个程序用在一些低端手机上,其实jsr75也支持vcard格式的导入,但那种格式太大,网络传输太耗费gprs流量,自己手工设计协议可以让流量减到最少,用逗号和回车做分隔符就行了,没有vcard那么多字段和标签。
再低端的手机,如果不支持java或者jsr75,那你就自己用串口连上手机给手机发at指令往出导通讯录吧。貌似所有的gsm模块都支持at指令吧,不确定。
【源码及视频教程】
视频教程链接(exe格式,用s-demo录的,没有病毒)
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2188548
源码(包括所有j2me代码及服务端的asp代码和access数据库)
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2188545
有了服务端源码,大家可以自己建立通讯录同步服务器,有了客户端的源码,大家可以用awt美华一下界面,加个闪屏,写上版权,完善一下做个产品也行,争取超过无忧和蜘蛛,我没意见,但声明一下,代码里的urlencode类是j2medev网站的一个老大写的,还有split,replace以及转换中文的函数都是从网上找的,版权还归他们所有,他们再是抄的谁的我就不管了。
【主要参考链接】
jsr75 doc
http://www.j2medev.com/Soft/ebook/200507/59.html
nokia pim api
http://wiki.forum.nokia.com/index.php/FileConnection_&_PIM_API
http://www.forum.nokia.com/info/sw.nokia.com/id/8837fbf6-b655-4990-be73-d6cffd5f8b29/Introduction_To_The_PIM_API_v1_1.zip.html
关于(串口编程)用AT指令读取手机通讯录的问题
http://community.csdn.net/Expert/TopicView3.asp?id=5720756    
【其它链接】
J2ME程序开发全方位基础讲解汇总
http://blog.csdn.net/HuDon/archive/2007/06/11/1647959.aspx
请问如何用J2me读取手机本地的联系人数据呢?
http://www.matrix.org.cn/thread.shtml?topicId=40259&forumId=4
Devices supporting the PDA Optional Packages
http://www.j2mepolish.org/devices/devices-pdaapi.html
J2ME平台中的URLEncoder实现类
http://www.sf.org.cn/j2me/network/20111.html
中文 J2ME中文编码问题
http://wiki.forum.nokia.com/index.php/%E4%B8%AD%E6%96%87_J2ME%E4%B8%AD%E6%96%87%E7%BC%96%E7%A0%81%E9%97%AE%E9%A2%98
j2me进度条与线程化模型
http://www.52rd.com/S_Txt/2005_12/TXT3014.htm
一个关于tcp通信的问题,高手进!!!
http://topic.csdn.net/t/20061215/11/5232692.html
全面分析MIDP通信API和外部系统交互
http://developer.e800.com.cn/articles/2007/11/1167664871895394054_1.html
使用Ant对J2me程序打包
http://pandonix.javaeye.com/blog/110985
Antenna与j2me打包
http://www.javaeye.com/post/364587
jsr 75的权限问题
http://www.j2medev.com/bbs/dispbbs.asp?boardID=17&ID=6202&page=39
J2ME可选包—PIM介绍
http://www.9dong.cn/InfoView/Article_243797.html
Using the PIM API for Java ME, Part 3 - Security Considerations
http://developers.sun.com/mobility/apis/pim/pim3/
J2ME基础知识
http://www.51cto.com/art/200601/18978.htm
MIDP程序中设置和得到MIDlet属性
http://www.cnjm.net/tech/article1303.html
【小节】
看来手机上的一些应用还是有些搞头的,好歹也是一个用户界面,我看java也就这点比.net的强,企业内部应用(局网web应用).net做比java又快又好,windows应用.net怎么也比awt,swing用户体验好吧,互联网应用只要.net架构做好了,支持的用户量不比java少,架构好了就是添机器的事了,到时候添机器也不能满足用户请求量的话,网络设备和存储设备早就是瓶颈了,不管你java还是.net都不是解决办法了。就在手机上.net没有j2me普及,支持.net手机一般比较高级,俺都买不起,所以偶尔用j2me做点手机应用还是不错的。
接下来可以做的就是把雅虎(http://local.yahoo.cn/)的本地搜索(就是搜索当地的吃穿住行,黄页信息,商家打折信息等信息的搜索)做个接口让j2me访问,这样想吃什么,想去哪儿玩,用手机就可以查了,不用开电脑了(貌似新浪的爱问和百度的一些本地服务有Wap版本,不过他的事他的,咱的是咱的)。手机搜索也就做本地搜索还比较有前途,咱想做,可惜没有CP(内容提供商)合作伙伴,所以就爬雅虎本地搜索的页面了,拿他当CP,当然你看着哪家本地搜索好就爬哪家,无所谓了。
然后做个公交路线查询,比如出去迷路了,查一下从哪儿到哪儿做几路车,其实有电脑的话上搜狗查一下就行了,可出去耍,谁老呆着电脑呀,咱做个kjava程序,把请求的参数传给服务器,服务器帮你把请求post给搜狗,再把搜狗的返回数据解析后把信息返回给手机不就行了吗?
好,出去也迷不了路了,也知道哪家的饭菜又便宜又好吃了,生活中可能还有一些乱七八糟的问题,貌似小I机器人懂得挺多的,什么查询股票啦,天气预报啦,字典翻译啦,存储记事信息啦,还有什么聊天等都有,想办法hack一下它的协议,或者找个网站上的接口,能给它发信息,能接受信息就行了,然后也给kjava做个接口,能让用户在手机上和小I对话就OK了。这样有一个手机,基本上啥事都解决了。
以上想法都是歪门邪道,不过是拿人家别人网站的东西适配一下,让自己的kjava客户端来使用罢了。但是技术含量不大,又好使,所以还是值得一做的。
剩下的就是手机RSS和手机邮箱了,其实这两个服务和上面的服务不一样,上面的服务都是无状态的,只转发一下请求就OK了,这两个你要在服务端保存每个用户的rss订阅地址,有新的信息还得收到本地数据库,然后返回给kjava的时候还得考虑rss内容大的话要分页传输给kjava有图片的话还得适配成手机适合看的大小。手机邮箱还得在服务端弄个smtp服务器来帮用户把邮件收到本地和发给别的smtp服务器。这两个服务虽然实用,但比较麻烦,咱就不做了,有免费的ucweb用就行了,等他收费了咱们再自己做一套。用简单的技术赚钱才是硬道理,点子对了就行,其实能赚钱的技术不一定就很负责,很高深。
posted @ 2007-09-03 22:10  蛙蛙王子  Views(5517)  Comments(19Edit  收藏  举报