Android Telephony框架

目录

  • 一、简介
  • 二、应用层(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos 7 安装通过yum安装google浏览器

在CentOS 7上使用yum安装Google Chrome浏览器稍微复杂一些,因为Chrome并不直接包含在默认的Yum仓库中。按照以下步骤来操作: 1、添加Google Chrome仓库 首先,您需要手动添加Google Chrome的Yum仓库。打开终端,并使用文本编辑器&a…

MySQL高可用搭建方案MHA

MHA架构介绍 MHA是Master High Availability的缩写,它是目前MySQL高可用方面的一个相对成熟的解决方案,其核心是使用perl语言编写的一组脚本,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中&am…

使用 AI 生成正则表达式,告别正则烦恼

如果你有处理正则表达式的需求,那么这个网站(autoregex.xyz)一定要收藏好。 可以根据文字描述生成正则表达式。 默认是从文字到正则,不用选择。 输入框中输入描述,点击 ”GO“ 按钮。 等待一会儿,即可生…

get请求搜索功能爬虫

<!--爬虫仅支持1.8版本的jdk--> <!-- 爬虫需要的依赖--> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency>…

mos管开关出现尖峰的原理? mos管开关的时候cs会出现尖峰,请问这是什么原因?

MOS管在开关过程中出现尖峰现象&#xff0c;通常是由于电路中的寄生参数和快速电压变化引起的。以下是一些导致尖峰出现的主要原因和原理&#xff1a; 寄生电容 在MOS管的源极&#xff08;S&#xff09;和漏极&#xff08;D&#xff09;之间存在寄生电容&#xff0c;这个电容在…

面试总结------2024/04/04---项目

1.面试官提问&#xff1a;你说你在项目中使用springsecurity jwt 实现了登录功能&#xff0c;能简单讲一下怎么实现的吗&#xff1f; 2.使用RabbitMQ实现订单超时取消功能 redis实现的劣势 订单状态定义 首先&#xff0c;我们需要定义订单的不同状态。在这个示例中&#xf…

【Java】单例模式

单例模式是面试中常考的设计模式之一 在面试中&#xff0c;面试官常常会要求写出两种类型的单例模式并解释原理 本文中&#xff0c;将从0到1的介绍单例模式究竟是什么 文章目录 ✍一、什么是设计模式&#xff1f;✍二、单例模式是什么&#xff1f;✍三、单例模式的类型**1.饿汉…

线上研讨会 | 新一代数字化技术赋能机器人及智能产线行业高质量发展

随着智能制造的快速推进&#xff0c;制造业转型升级到了关键阶段。越来越多的企业以数字化技术搭配智能机器人及智慧产线&#xff0c;主动实现数字化转型。达索系统3D体验平台是实现企业数字化转型的新一代数智化平台&#xff0c;基于型、数字驱动、数字化连续技术&#xff0c;…

【深度学习基础】

打基础日常记录 CNN基础知识1. 感知机2. DNN 深度神经网络&#xff08;全连接神经网络&#xff09;DNN 与感知机的区别DNN特点&#xff0c;全连接神经网络DNN前向传播和反向传播 3. CNN结构【提取特征分类】4. CNN应用于文本 RNN基础1. RNN的本质 词向量模型word2Vec1. 自然语言…

Selenium与Metamask钱包及DApp交互及验证码破解汇总

1.LavaMoat报错: selenium.common.exceptions.WebDriverException: Message: unknown error: Runtime.callFunctionOn threw exception: Error: LavaMoat...`报错原因: 根本原因是Metamask为了用户钱包安全,而将LavaMoat 设置为了全局不可用。 报错解析文章链接: https:/…

城市定量分析学习资料大数据 gis 空间句法 Python

城市定量分析学习资料大数据 gis 空间句法 Python

Ubuntu 20.04.06 PCL C++学习记录(十六)

[TOC]PCL中点云分割模块的学习 学习背景 参考书籍&#xff1a;《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,&#xff0c;PCL版本为1.10.0&#xff0c;CMake版本为3.16 学习内容 用一组点云数据做简单的平面的分割 源代码及所用函数 源代码 #include<iostr…

IP地址到底有什么用

IP地址在计算机网络中的作用至关重要&#xff0c;它不仅是设备在网络中的唯一标识&#xff0c;更是实现网络通信、网络管理和安全的关键要素。下面&#xff0c;我们将从多个方面详细阐述IP地址的作用。 首先&#xff0c;IP地址作为设备的唯一标识&#xff0c;为网络通信提供了…

JavaScript - 你做过字符串反转吗

难度级别:初级及以上 提问概率:65% 例如有一个字符串本来是“abcde”,那么现在希望可以将其反转,最终的值是“edcba”,该如何做呢? 第一种是将字符串转为数组,利用数组的reverse方法实现元素反转,然后再将数组转为字符串,代码如下 …

面试必问!鸿蒙开发中的FA模型和Stage模型是什么?他们分别有什么区别?

鸿蒙OS&#xff08;HarmonyOS&#xff09; 是面向全场景的分布式操作系统&#xff0c;它通过创新的应用模型&#xff0c;为开发者提供了强大的应用开发框架。 在HarmonyOS的发展过程中&#xff0c;FA模型&#xff08;Feature Ability&#xff09;和Stage模型是两种重要的应用模…

静电场概述

什么是静电场 静电场是由特殊的电荷引起场。 这个特殊的电荷指&#xff1a;相对于观察者静止、且电量不随时间改变的电荷。 库仑定律 指在无限大的真空中&#xff0c;当两个静止的小带电体之间的距离远远大于本身的几何尺寸时&#xff0c;该两带电体之间的作用力。 如图所示…

二分查找 -- 力扣(LeetCode)第704题

题目 https://leetcode.cn/problems/binary-search/description/ 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例…

JavaScript代码小挑战

题目如下&#xff1a; 朱莉娅和凯特正在做一项关于狗的研究。于是&#xff0c;她们分别询问了 5 位狗主人他们的狗的年龄&#xff0c;并将数据存储到一个数组中&#xff08;每人一个数组&#xff09;。目前&#xff0c;她们只想知道一只狗是成年狗还是小狗。如果狗的年龄至少为…

SpringBoot集成Skywalking链路追踪

安装skywaling 参考&#xff1a;Centos7搭建 SkyWalking 单机版-CSDN博客 下载Agents https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz 1. 在IDEA中使用skywalking agent 在VM options中填入如下信息 -javaagent后是…

Scaling Laws 又失灵了?谷歌新研究:扩散模型不是越大越好

近年来&#xff0c;模型规模呈现出愈来愈大的趋势&#xff0c;越来越多的人相信“力大砖飞”。 OpenAI 虽然没有公布Sora的训练细节&#xff0c;但在Sora的技术报告中提到了&#xff1a; Our largest model, Sora, is capable of generating a minute of high fidelity video.…