J2ME–Mail客户端

从上周一开始,琢磨着做一个类似G-Mail那样的手机客户端。


做这个客户端要通用各种Pop3协议的mail服务,用户使用输入pop,smtp参数就可以。
最大的问题是如果用cmwap上网,cmwap无法直接像mail服务器建立链接;如果用cmnet
费用又太贵了,取了一个折中的办法,上网方式用户可以选择cmwap,cmnet。程序本身不直接
链接mail服务器,而是向我的一个中间服务器发送各种指令信息,让那个中间服务器去向远程的
mail服务器来发送命令,这样一来中间服务器还可以当作cache机器来处理。
客户端和中间服务器通讯的方式用的是http协议。这样无论cmwap,cmnet都可以用。

 

我在模拟器上和Nokia N70,MOTO A1200 (手写)上测试通过(注一)。

这个程序的核心放在UI的设计上,UI设计还是继承自以前的自己定义的框架。这次又增加了
KCheckBox,KTextBox,KAlert等重要控件。
整个系统的风格也模仿WinCE的风格:)
整个程序的控件没有用到系统任何高级控件,所有控件都是我自己手画出来的。放在任何手机上
都是这个效果.(注二)
绘制控件是个非常细致的活,很多都是细节上的事情。当然也需要一定的技巧:)
主要功能:
1)收发Pop3协议的email;
2)不能砍信;
3)提供日历,发短信辅助工具
4)目前只支持一个账户同时使用,其实也可以像outlook那样建立多个账户;
5)可以自己定义菜单习惯和mail列表显示方式;
6)Mail 转发,回复等这些功能不用说了;
7)收下来的mail没有从服务器端删除,因为你可能会在其它地方用到,也没有标记未读(当然也可以);

手机DownLoad 地址:

http://211.136.85.162/onl/m-mail.jad

 

还是看图吧。

 

启动界面

Pop3,Smtp设置

Smtp设置保存后

设置菜单显示方式和mail列表显示项

内置工具SMS,Calendar

设置完毕,选择Login后

load完后显示列表…

选中mail某项后的Menu

转发界面

Mail详细界面(此mail没有内容)

贴图就看这些吧。真实手机上截图比较麻烦,还要用照相机照,看模拟器的方便一些:)

注一:关于手写笔,严格上说整个系统是半实现手写笔。一般手写笔手机没有左右软键,所以实现了左右软件的手写笔模拟
而其它控件上没有实现,可以通过UP,DOWN来切换焦点.其实也可以实现,只是细致一些,多写点Code.

注二:需要用到输入法的控件是通过一个高级控件和我这个控件相互交互的,详见以下文章;
不一定是在所有机器上都这个效果,可能有些机器上全屏控制会有些问题或者其它问题吧,对于屏幕尺寸较小,以及分辨率较低的手机可能看到的效果较糟糕。

PS更新:

增加了多个帐号的支持。
1.目前系统支持3个帐号。
2.增加对POP/SMTP SSL的支持。
3 阅读信内容时候增加转发到短信功能。
注:界面已经与上面的界面有些变化.

在调试过程中发现有一个非常隐藏的问题,就是通过HTTP通讯时得到的OutputStream,如果象里面写数据时,有些手机(LENOVO-S9)调用out.flush(),就可能导致堵塞的现象。后来在网上找到资料说有些手机确实有这个问题,开始以为我的手机拨号有问题呢。
下面是原文:

http://java2me.org/forum/viewtopic.php?p=340&sid=ce30a6cc0fdec3b619051f0e52e449c6

/*
The call to flush() uses a feature of HTTP 1.1 that allows data to be
sent in smaller loads. When calling flush() or sending a large
amount of data (in version 1.0.3) chunked encoding is used.

If you are using an HTTP 1.0 server or proxy server the chunked
transfer may cause problems.

You can avoid the chunking behavior with small transactions by just
calling close() where you were using flush(). For larger transactions
you need to buffer your output so a single write() and close() are
issued to the output stream.
*/

增加几个快捷键操作.

分享到: 更多