Android Telephony框架

时间:2024-04-07 17:22:29

目录

  • 一、简介
  • 二、应用层(Application)
  • 三、框架层(Framework)
  • 四、本地 RIL 层(RIL)
  • 五、驱动层(Modem)
  • 六、整体框架


一、简介

无论手机发展到如何智能的程度,最关键和重要的功能仍然是通讯,具体来说就是打电话、发短信、上网功能的使用。而整个 Android 通讯的框架从下往上可以分为 4 个层次:

  • 1、 Modem ----这是整个通讯的硬件基础,需要 Modem 芯片,不同制式需要采用不同
    的 Modem;
  • 2、 RIL ----为了适配不同的 Modem 芯片而抽象出来的中间层,用于将 Modem 指令
    转换为 Java 可用的数据流;
  • 3、 Framework 中的 Telephony ----这是在 Framework 层搭建的通讯框架,面向开发
    者提供操作通讯事务的能力;
  • 4、 Application ----这是最上层的应用,直接面向用户,提供拨号、上网、发短信的界面;

二、应用层(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)

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 层

RILJ(Radio Interface Layer Java):

RILJ是Android系统中的一个Java库,用于处理与手机基带(Modem)通信的高层接口。它提供了一组Java接口,用于向基带发送命令、接收响应,并处理与手机网络通信相关的功能。RILJ通常运行在Android系统的应用层,与应用程序和系统服务进行交互,将高层的通信请求转换成与基带通信的底层命令。

RILD(Radio Interface Layer Daemon):

RILD是Android系统中的一个守护进程(Daemon),用于与手机基带进行底层通信。它负责管理与基带的通信通道,接收来自RILJ的请求并将其转发给基带,同时将基带的响应返回给RILJ。RILD通常运行在Android系统的底层,与基带硬件进行直接通信,实现手机网络功能的底层支持。

RILD 是一个可执行程序,作为守护进程运行在系统中,进程内配合 RIL Lib 和 Vendor RIL 实现了 RIL 的所有功能,它通过 Socket 与应用框架层进行通信,守护进程内部会初始化 VendorRIL,同时管理所有的电话相关的请求、主动上报、请求 Response 等事件,其主要功能如下:

  • 1.Event 处理框架(通过 Select 机制实现)
  • 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 卡,直接上电即可工作,自动完成初始的找网、网络注册等工作,完成之后即可打电话、发短信等。

六、整体框架

在这里插入图片描述

参考链接:
Android telephony整体结构
初识telephony