今天接触了一个新项目,实现对短消息/电话的操作,比如一些过滤功能。目前是在Symbian C++上开发,team里已经有人正在做了,我看了下效果还不错。今天boss让我调研一下基于J2ME能否实现这些功能。
自己也知道可行性渺茫,但是也一直没有相关调研过,就查阅了资料。
1. J2ME对于短信功能的支持情况。
a) 目前通过JSR205 : Wireless Message API,实现收/发短信的功能。但这种短信与我们传统的短信不同。传统短信时无端口的短信,而通过JSR205收/发的短信时有端口的。如果是开发者自己开发一个短信客户端,用J2ME可以开发出能够收/发软件的客户端软件,但是流程与传统短信不同——不能使用系统的收/发件箱进行短信操作。所以开发者需要自己建立收/发件箱,而这是与系统收/发件箱分离的。而这至少也是一种可行的方案。其中还要涉及到非常著名的push注册机制。
b) 另外,还有个曾经万众期待,目前却几乎销声匿迹的JSR 266: Unified Message Box Access API (UMBA-API)。这是可以操作系统收/发件箱的,可以对其中短信进行操作。可是,目前该项目在BenQ公司手上搁浅了。如果这个JSR一旦完成并发布,J2ME在无线领域的功能就大大增强了。目前我们也只能期待这个JSR早日问世了。
关于JSR266可以参见:http://jcp.org/en/jsr/detail?id=266
2. J2ME对于电话功能的支持情况。
在MIDP2.0中,MIDlet类增加了platformRequest(String URL)方法用于调用部分本地应用程序,其中包括电话应用程序。platformRequest(“tel:***********”)方法可以发起一个语音呼叫,由电话应用程序来处理。也就是说,J2ME可以在程序中调用系统底层的接口来实现打电话的功能。但是,对于电话功能,J2ME就只有这一点点支持。没有办法监听电话呼入事件,真的是一个短板。如果能够对电话呼入监听,也就可以进行后续的电话屏蔽之类的操作。不知道以后会不会在这里有所增强。
总体来讲,目前J2ME对短信/电话这些功能支持性很差,主要是很难调用系统API。而相对的,Symbian C++可以调用Symbian系统的系统API;Android可以调用Android系统的系统API。或许以后J2ME会在这方面有所改进,但目前情况下,建议开发者考虑Symbian C++或者Android在各自系统上开发软件。
参考资料:
1. http://blog.csdn.net/hshm20517/archive/2008/10/28/3169030.aspx
2. 《JavaME 核心技术与最佳实践》