Android平台的手机双网双待的设计
模块,作为一个虚拟的中间层,该层位于硬件与其他软件层之间,采用YAFFS2 文件系统,同时也是手机软硬件的连接层。在系统开发中,也需要针对自身的硬件模块添加对应的驱动,如Phone 驱动、GPRS 驱动、GPS 驱动、液晶和触摸板驱动等。
(2) 本机库/Android 运行时。
这些共享库都是利用C 和C + + 语言编写的,且针对电话使用的特定的硬件架构进行了编译,并已由手机制造商预先安装到手机上。本机库主要包含: 标准C 函数库、媒体功能库、浏览器引擎、2D 和3D 图形库及SQLite 引擎等。开发者利用这些功能可以方便地开发出人机界面友好的应用程序接口,极大地缩短了开发过程。
Android 运行时包含一组Java 内核库和Dalvik 虚拟机,它们有效地优化了Java 程序的运行过程。
(3) 应用程序框架层。
Android 应用程序开发是基于框架和组件的,该层提供了在创建应用程序时需要使用的各种高级构建块,因此在该层中,开发人员拥有访问框架API 的全部权限,在开发应用程序时调用Android 本身自带的许多组件,也可以开发新的组件,并将该组件放入应用程序框架中,以供自己和其它应用程序调用,这样的模块大大提高了应用程序的开发效率。
(4) 应用程序层。
Android 本身包含一些由Java 开发的核心应用程序,如桌面、短信收发程序、日历、电话通讯录、浏览器、E-mail 客户端等,开发者还可以在此基础上开发出更多具有特色的Android 应用程序,如特效相机、播放器、充电相框等。
3. 1 Android 双网双待实现方案
在GSM 单模状态下通过添加一套支持CDMA 的无线接口层RIL 来实现双网双待机制的方案如图3 所示。
图3 Android 双网双待电话部分结构
在PhoneAPP 中new 一个GSMPhone 和一个CDMAPhone,分别对应两种framework ( 不同的CallTracker) 和RIL ( 不同的RIL) ,实现单模向双网双待的改进。
图中CallLiST 主要用来管理两个电话之间的切换,以避免如挂掉某一个通话却导致另一个的通话也结束等一系列界面显示出错问题。CallList 模块管理两个电话以及这两个电话所有的通话,通过一个CallList 表来存储两个电话的所有呼叫。上层界面调用这个CallList 表来处理两个电话的切换。在framework 中new 一个CallList 的类来存储phone 的多个电话以便上层显示。
CallList 类中包含attached( ) ,detach( ) ,update( ) ,clear( ) ,get-CurrentCall( ) ,getDefault( ) 等方法。使得两个Phone 的Call 得到控制。挂掉的时候就从表中删除,来电话的时候加入表中。
上层显示的时候,只要调用CallList 中的最后存入Call 就不会出现界面出错的情况。
在包含GSM 网络和CDMA 网络的双网双待模块中,因为有了CDMA 部分的整合不少代码已经发生改变,原来的CallTracker只被GSM 使用,在这里改为CallTracker 和GsmCallTracker,抽象出CallTracker 基类,使其也可以被CDMA 利用; GSMCall 变成GsmCall,更加符合统一的命名规则; 另外,比如pppd 的启动部分,也从Java 框架层放到RIL 层。
3. 2 Android RIL 层的改进
在Android 系统中RIL 是电话系统的本地实现,它提供了Android 电话服务( android. telephony) 与无线电硬件之间的抽象层,主要负责AT 命令的发送和响应解析,这也是电话服务的实现基础。另外,RIL 还负责数据的可靠传输。因此RIL 在Android电话部分起核心作用。本方案设计过程中主要涉及到RIL以下四个部分的修改:
(1) 由于本方案维护两个RIL 实例,因此RIL 实例管理者( RIL instance Manager) 需要各自负责与android telephony 通过socket 进行连接。每个RIL 实例针对各自的SIM 卡提供专用的通信通道来进行modem 侧的通信服务。
(2) 无线电仲裁管理者( Radio Service Arbitration Manager),这是实现双网双待方案中新增加的模块,主要用来为每个RIL 实例进行语音和短消息业务的仲裁,数据服务的仲裁由MODEM 来进行。
(3) RIL 事件分配机( RIL Event Dispatcher) ,用于分配RIL请求及AMSS 事件到通信服务管理模块进行的处理。
(4) 无线电服务管理者( Radio Service Manager) ,Android 通话应用首先需要通过子系统信息来从framework 层获得通话服务,然后每个SIM 卡子系统将会映射到一个特定的RIL 实例ID上,服务管理将使用RIL 实例的ID 来识别子系统ID 中DSS API的参数。
3. 3 Android 双网双待通话机制的实现
Android 系统电话服务的实现基础是RIL.在Android 单模状态下的RIL 同TI 等平台类似,均使用了Google 默认的参考接口,也就是通过打开modem 侧提供的串口或者USB
双网双待 嵌入式系统 framework Android 相关文章:
- 基于Linux-ARM平台的3G无线设计(08-26)
- 消除射频嵌入式系统中的噪声和杂散(09-14)
- 嵌入式系统中集成微波和射频技术,机会够成熟吗?(07-19)
- Android手机WiFi连接故障处理指南(06-01)
- 基于RFID与Android平台的物品清点系统(06-11)
- 基于NFC技术控制的电子钱包设计(06-17)