Android Telephony框架

目录


一、简介

无论手机发展到如何智能的程度,最关键和重要的功能仍然是通讯,具体来说就是打电话、发短信、上网功能的使用。而整个 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

相关推荐
百锦再1 小时前
Android Studio开发 SharedPreferences 详解
android·ide·android studio
青春给了狗1 小时前
Android 14 修改侧滑手势动画效果
android
CYRUS STUDIO1 小时前
Android APP 热修复原理
android·app·frida·hotfix·热修复
火柴就是我2 小时前
首次使用Android Studio时,http proxy,gradle问题解决
android
limingade3 小时前
手机打电话时电脑坐席同时收听对方说话并插入IVR预录声音片段
android·智能手机·电脑·蓝牙电话·电脑打电话
浩浩测试一下3 小时前
计算机网络中的DHCP是什么呀? 详情解答
android·网络·计算机网络·安全·web安全·网络安全·安全架构
青春给了狗4 小时前
Android 14 系统统一修改app启动时图标大小和圆角
android
pengyu5 小时前
【Flutter 状态管理 - 柒】 | InheritedWidget:藏在组件树里的"魔法"✨
android·flutter·dart
居然是阿宋6 小时前
Kotlin高阶函数 vs Lambda表达式:关键区别与协作关系
android·开发语言·kotlin
凉、介7 小时前
PCI 总线学习笔记(五)
android·linux·笔记·学习·pcie·pci