Android电话部分主要分为:Modem驱动、RIL(Radio Interface Layer)、电话服务框架、应用4层结构。
电话部分的结构如图1-1所示:
通讯框架的应用层主要包括通话界面IncallUi,处理通话逻辑的TeleService和Telecomm,网络设置ConnectivitySettings等。TeleService和Telecomm通过Binder传递数据。
Framework层是通信框架的核心部分,也是本书介绍的重点。包括通话,数据网络,短彩信收发,主副卡切换等业务逻辑。这在之后的章节中会为大家一一介绍。
rild是Init进程启动的一个本地服务,这里需要注意的是,从Google8.0之后,这个本地服务的通讯方式从socket改为了HIDL。
HIDL是用于指定HAL与其用户之间接口的一个接口描述语言(Interface Description Language),它允许将指定的类型与函数调用收集到接口(Interface)和包(Package)中。更广泛地说,HIDL 是一个可以让那些独立编译的代码库(Libraries)之间进行通信的系统。Google在考虑了互用,效率,直观这几各方面才决定将通讯方式改为HIDL。