基于Android平台的双网双待设计
实际的无线通信。比如,UI上层向RIL 层发送RIL_REQUEST_DIAL 请求,RIL 层在接收到该请求的时候,通过串口向modem 发送"AT***"命令,发起呼叫,当然,最终真正实现通话的是modem 侧的功能,此时,与Android 就无关了。Android 平台RIL 与modem 的工作原理如图4 所示。
图4 RIL 与modem 的工作原理
呼叫(call)构建于电话服务的基本架构之上。
与呼叫相关的主要用户接口,其实就是基于ITelephony 接口实现Phone 应用中的"Phone"服务,通过TelephonyManager 提供访问接口。此服务内部通过PhonyFactory 获取的GSMPhone /CDMAPhone 来访问RIL,提供诸如拨号、接通、挂断、保持通话等服务功能。Android 双网双待呼叫部分的结构如图5 所示。
图5 android 双网双待呼叫部分结构
Android 系统双网双待呼叫部分的实现,从GSMPhone /CDMAPhone到对应RIL 的路径中间主要涉及几个关键数据结构,即GSMCall /CDMACall、CallNotifiter、GSMConnection /CDMAConnection、CallTracker 等类。
其中GSMCall 和CDMAPhone 都继承Call 基类,提供基本的呼叫控制结构以及呼叫状态,如Hold、Active 等信息,每个接通的GSMCall / CDMACall 都拥有一个或多个(conference call)GSMConnection /CDMAConnection 结构,用于维护呼叫时长等相关信息。CallTracker 是呼叫模块的核心,它提供与呼叫相关的接口,如通话、挂断等。GSMPhone /CDMAPhone 拥有CallTracker的实例,并封装相应的接口,这个接口通过调用GSMPhone /CDMAPhone中的CommandsInterface 实现,即提交的RIL 封装。
除此之外,CallTracker 还维护当前的GSMCall 和CDMACall列表,保持对所有呼叫状态的追踪,提供对来去电等呼叫状态的管理。实现追踪的方法为pollCallsWhenSafe,通过CommandsInterface的getCurrentCalls 接口获取当前活动的呼叫列表。这一操作的底层实现为AT + CLCC(不同的Modem 实现可能不同),这是从Modem 获取呼叫状态列表的主要接口。回调通过ENENT_ POLL _ CALLS-RESULT 完成,回调函数为handlePollCalls,这是获取Modem 中实际呼叫信息的核心方法,也是Tracker的含义所在。handlePollCalls 完成实际的追踪功能,根据底层上报的Outgoing、Incomming 以及Active、Hold 等状态更新Call列表的信息,每个呼叫在其生命周期内的状态转换,在Call-Tracker 中都可得到体现,并将这些变化信息及时通知其关注者,也就是实现Phone 的应用。
4 结果分析
基于Android 操作系统实现的双网双待功能模块设计,利用Android 通用的系统架构和设备无关的应用程序开发平台,实现了双网双待单通系统电话部分的框架设计和上层Phone 应用程序设计。改进后的Android 系统平台同时支持GSM 和CDMA两种网络同时待机,这大大方便了许多拥有两张手机卡并且不在同一制式网络的用户。图6 为Android 系统平台上GSM和CDMA 双网同时待机的状态图。
图6 GSM 和CDMA 双网同时待机界面
5 结语
利用Android 原有系统架构和本身包含一些Java 核心应用程序,通过添加一套新的支持CDMA 的RIL 来实现基于Android平台的双网双待设计,使得一部手机同时维护两套独立的RIL,既支持GSM 又支持CDMA,分别对双SIM 卡进行各自独立的处理,极大地方便了广大Android 手机用户。Android 作为目前被给予厚望的智能手机操作系统,实现双网双待必将为其赢得更广阔的发展空间以及更多的拥护者,也将为未来的发展奠定坚实的基础。尽管本方案的部分设计还不完善,许多细节的实现还有待解决。但随着Google 对Android 版本的不断升级以及Android 应用的不断丰富,基于Android 平台的双网双待设计将会不断地完善与发展。
- 五大主流智能手机操作系统的前世今生(03-02)
- MeeGo是什么?(06-05)
- 基于智能手机的校园短信网关系统的设计与实现(10-05)
- 智能手机的无线网络会议白板软件系统开发(10-29)
- 高通公司全面的手机开发平台参考设计介绍(04-08)
- 基于Android和蓝牙技术的手机遥控车设计(10-13)