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.rhkb.cn/news/301674.html

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

相关文章

uniapp vue2 时钟 循环定时器

效果展示: 时钟 写在前面:vue2有this指向,没有箭头函数 实验操作:封装一个时钟组件 uniapp vue2 封装一个时钟组件 核心代码: this指向的错误代码,在下: start() { this.myTimer setInterval(…

分公司=-部门--组合模式

1.1 分公司不就是一部门吗? "我们公司最近接了一个项目,是为一家在全国许多城市都有分销机构的大公司做办公管理系统,总部有人力资源、财务、运营等部门。" "这是很常见的OA系统,需求分析好的话&#xff0…

【SpringCloud】Nacos 配置管理

目 录 一.统一配置管理1. 在 nacos 中添加配置文件2. 从微服务拉取配置 二.配置热更新1. 方式一2. 方式二 三.配置共享1. 添加一个环境共享配置2. 在 user-service 中读取共享配置3. 运行两个 UserApplication,使用不同的 profile4. 配置共享的优先级5. 多服务共享配…

Leetcode刷题-哈希表详细总结(Java)

哈希表 当我们想使⽤哈希法来解决问题的时候,我们⼀般会选择如下三种数据结构。 数组set (集合)map(映射) 当我们遇到了要快速判断⼀个元素是否出现集合⾥的时候,就要考虑哈希法。如果在做⾯试题⽬的时候…

【测试面试题】14题常见APP测试面试题(参考答案)

大家好,这份面试题不难,都是一些基础题。 先上一个面试题汇总图,建议大家可以先思考下如果是自己能不能回答全,再去对照看参考答案。 下面为参考答案: 一、基础篇 1、APP的测试流程? APP测试流程与web测…

什么是并行通信、串行通信?什么是全双工、半双工、单工? 什么是异步通信、同步通信? 什么是RS232、RS485?什么是pwm?

这篇文章主要讲一下单片机中的通信相关的内容 主要讲一下以下5个问题: 1.什么是并行通信、串行通信? 2.什么是全双工、半双工、单工? 3.什么是异步通信、同步通信? 4.什么是RS232、RS485? 5.什么是pwm?什…

初识CSS

目录 前言: CSS的介绍: CSS的发展: 1)CSS1.0: 2)CSS2.0: 3)CSS2.1: 4)CSS3: CSS特点: 1)丰富的样式定义: 2)易于设置和修改: 3&…

网络电视盒子哪个品牌好?2024畅销电视盒子排行榜

电视盒子的品牌和产品非常多,让新手在选购时难度增大,大部分消费者在此时会选择参考销量排名情况,小编这次结合各个电商平台的销量和用户评价整理了电视盒子排行榜,想买电视盒子不知道网络电视盒子哪个品牌好可以收藏。 TOP 1.泰捷…

前端开发之Element树结构组件el-input的type=“password“时候账号密码自动填充解决方案

Element树结构组件el-input的type“password“时候账号密码自动填充解决方案 前言效果图解决方案 前言 在使用element的input的password当参数和login的参数相同时,在浏览器保存的用户名密码会自动填充,导致input附加上默认值 使用场景一般是在用户管理…

K8s学习八(配置与存储_配置)

配置与存储 配置管理 ConfigMap ConfigMap的创建 一般用于去存储 Pod 中应用所需的一些配置信息,或者环境变量,将配置于 Pod 分开,避免应为修改配置导致还需要重新构建 镜像与容器。configmap缩写为cmkubectl create cm -h来查看创建命令…

物联网实战--驱动篇之(四)LoRa应用(modbus)

目录 一、前言 二、板级收发 三、主机请求 四、从机接收及回复 五、主机接收 一、前言 之前两篇分别介绍了modbus和sx1278的驱动,但是都并未具体讲解如何应用,那么这一篇就把两者结合起来,做个小demo,便于理解这两个驱动的使…

测试开发面经(Flask,轻量级Web框架)

1. Flask的核心特点 a. 轻量级:核心简洁,只提供了基本的功能,其他高级功能可以通过插件或扩展来添加。 b. 灵活性:允许开发者选择适合自己项目的组件和工具,没有强制的项目结构和设计模式。 c. 易于扩展:提…

蓝桥杯刷题-09-三国游戏-贪心⭐⭐⭐

蓝桥杯2023年第十四届省赛真题-三国游戏 小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X, Y, Z (一开始可以认为都为 0 )。游戏有 n 个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X, Y,…

并发 ---- 多线程原理及底层实现

并发现象遍布日常生活,我们时常接触:我们可以边走路边说话;或者,左右手同时做出不一样的动作。在计算机应用程序中也有很好的例子: 浏览器 - 浏览器可以同时下载任意数量的文件和打开多个网页,下载时仍允许…

【Linux】进程控制之进程程序替换

目录 前言 替换的原理 替换函数 记忆技巧 函数使用 execl execlp execv execvp execle execvpe 调用其它语言的程序 模拟实现一个shell 前言 关于本文可以先去看看上一篇【Linux】进程控制详解-CSDN博客可以更好的理解这里的内容 学完本篇文章,你就…

AI智能分析盒子在工地的应用,提高工地管理效率和安全性

工地ai智能分析盒子是一种基于人工智能视觉分析技术的人工智能盒子,旨在提升工地作业区域的管理效率和保障作业人员的安全。通过最前沿的AI视觉算法、大数据,能够实时监控工地现场视频流画面,对施工工地人员的工作着装及日常作业行为进行规范…

OpenCV 4.9基本绘图

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV使用通用内部函数对代码进行矢量化 下一篇:使用OpenCV4.9的随机生成器和文本 ​目标 在本教程中,您将学习如何: 使用 OpenCV 函数 line() 画一…

产品经理和项目经理的区别

1. 前言 本文深入探讨了产品经理与项目经理在职责、关注点以及所需技能方面的显著区别。产品经理主要负责产品的规划、设计和市场定位,强调对用户需求的深刻理解和产品创新的推动;而项目经理则侧重于项目的执行、进度控制和资源管理,确保项目按时、按质、按预算完成。两者在…

一文搞懂从爬楼梯到最小花费(力扣70,746)

文章目录 题目前知动态规划简介动态规划模版 爬楼梯一、思路二、解题方法三、Code 使用最小花费爬楼梯一、思路二、解题方法三、Code 总结 在计算机科学中,动态规划是一种强大的算法范例,用于解决多种优化问题。本文将介绍动态规划的核心思想&#xff0c…

CTK插件框架学习-服务工厂(06)

CTK插件框架学习-信号槽(05)https://mp.csdn.net/mp_blog/creation/editor/137240105 一、服务工厂定义 注册插件时使用服务工厂注册,使用getService根据调用者插件资源文件内容获取在服务工厂内的对应实现在服务工厂中可以知道是哪个插件正在调用服务工厂懒汉模式…