Android Telephony架构讲解

目录

一.引言

二.范围

三.总结


一.引言

该文档用于介绍Android Telephony的基本框架。

二.范围

本文档适用于学习入门Telephony知识,了解Telephony整体结构。

  1. Telephony架构讲解

Android系统是主流的手机操作系统,手机在人们生活中的的存在最不可忽视的功能就是通信,Android系统中的的Telephony为此功能的核心模块,Telephony主要提供了语音,短信,数据链接,SIM卡管理,电话簿等功能

Telephony架构由上到下可分为4层:

应用层(Application)

面向用户的应用层,依赖于应用框架层,通过访问Telephony应用框架层的业务模块来呈现给用户具体的功能,主要包括Phone、Contacts、SMS等应用,Phone比较特殊,系统启动时就被运行起来了,且Phone启动时会创建Telephony框架层,并与之运行在同一个进程中。

应用框架层(Framework)

Telephony应用框架层主要包括RILJ、Service、业务功能模块三个部分构成,提供了电话,短信,联系人等所需的所有功能。

代码路径是:/frameworks/base/telephony

android.telephony:外部应用可访问的Phone模块

com.android.internal.telephony:Phone应用和框架内部使用的Phone模块

1.RILJ

/frameworks/opt/telephony/src/java/com/android/internal/telephony/RIL.java

RIL.java是Telephony和本地RIL的通信接口,通过Socket(rild)完成电话服务命令的收发

2.Service

Telephony基于IBinder提供了各种功能的Service,以便于业务功能模块的实现

3.业务功能模块

Telephony业务功能模块主要包括语音、短信、ICC 卡、网络服务以及数据连接等,这些功能模块是Android系统通话功能的核心和基础注:整个Framework层的Telephony框架运行在一个叫做Phone(com.android.phone)的进程中。而这个进程是在packages\services\Telephony模块中被创建的

RIL

RIL(Radio Interface Layer)是Telephony框架层与Modem之间的接口层(属于HAL层),RIL将Modem提供的各种服务进行了抽象,以提供给Framework层统一的接口。

RIL架构

1.RIL抽象层

实现RIL层框架,包括RILD守护进程和RIL库,定义了其与Framework层、Vendor RIL之间的接口

2.RIL实现层

基于不同Modem厂商的RIL功能实现(Vendor RIL),其主要功能是接受 RIL 层的主动 Request,转发给 Modem,同时接受 Modem 返回的请求 Response 和主动上报事件,上报给 RIL 层

RILD

RILD是一个可执行程序,作为守护进程运行在系统中,进程内配合RIL

Lib和Vendor RIL实现了RIL的所有功能,它通过Socket与应用框架层进行通信,守护进程内部会初始化Vendor RIL,同时管理所有的电话相关的请求、主动上报、请求 Response 等事件,其主要功能如下:

1.Event 处理框架

2.请求、数据下发 (将 RILJ 通过 Socket 传过来的数据解成 C 语言数据结构,然后和请求下发给 Vendor RIL 处理)

3.Response、数据上报(将 Vendor RIL 上报的请求 Response 和主动上报事件打包通过 Socket 转发给 RILJ 层)注:RIL和Modem之间交互,大部分厂商采用AT命令交互,也有其他的交互方式,例如高通使用了ONCRPC、QMI 接口

驱动层(Modem)

RIL 驱动用于实现电话功能,主要硬件是通信模块(Modem),Modem 通过与通信网络进行沟通,传输语音及数据,完成呼叫、短信等相关电话功能。

目前的智能机在硬件上多采用双 cpu 的架构,一个是基带处理器,主要处理数字信号、语音信号的编码解码以及通信3协议,基带处理器、射频和其它外围芯片作为一个 Modem 模块,提供 AT 命令接口。

另一个是应用处理器,运行操作系统和各种应用程序。对于目前大部分的独立通信模块而言,无论是 2G 还是 3G 都已经非常成熟,模块化相当完善,硬件接口非常简单,也有着相对统一的软件接口。

一般 Modem 模块装上 SIM 卡,直接上电即可工作,自动完成初始的找网、网络注册等工作,完成之后即可打电话、发短信等。

下图是Telephony 主要功能的介绍

 

Android8之前Telephony与modem之前使用socket通信,Android8之后使用Hidl通信:

ps:目前Android13及之后版本优先使用AIDL通信方式替换HIDL通信方式,代码逻辑上是如果实现了AIDL方式优先使用AIDL方式进行通信,如果未实现AIDL方式则继续使用HIDL方式进行通信的

三.总结

Android Telephony采用了分层结构的设计,共跨越了三层:应用层、应用框架层和系统运行库层,与 Android 操作系统整体分层结构保持一致,从上到下共分三层: Telephony 应用、Telephony 框架、RIL(Radio Interface Layer,无线通信接口层,主要位于系统运行库层的 HAL 中)。学习过程中一般选取一个模块,从上往下看,比如打电话,从DialerTelephonyRIL(RILJRILDRILC),再比如SMS,数据拨号,这样梳理两三个流程,就会豁然开朗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龚礼鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值