首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于Android平台的双网双待的设计方法 02

基于Android平台的双网双待的设计方法 02

3 Android 平台双网双待软件设计
   
    Android 平台双网双待功能设计主要涉及到Android 软件平台的四大功能模块,分别是Linux 内核层、本机库/运行时、应用程序框架层以及应用程序层。其中在应用程序层利用Android的各种组件API 实现PhoneApp 并在Linux 内核层提供相应的底层驱动。Android 系统架构如图2 所示。
图2 Android 系统架构

    (1)Linux 内核。
   
    Android 系统平台是基于优化的Linux 内核来开发的,主要添加了一个名为Goldfish 的虚拟CPU 以及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的参数。
返回列表