当前位置: 首页 > news >正文

Telephony Call

1、Telephony 架构

        Telephony整体架构和Android架构一样的,包括APP层,框架层,HAL层,内核层。        

        其中HAL层不同平台实现方式不同,其中MTK SPRD 平台使用AT通道的方式实现,高通使用QMI方式实现。

       

2、通话业务介绍 

        APP包括Dialer.apk、TeleService.apk、Telecom.apk。其中Dialer.apk跑在com.android.dialer进程中,TeleService.apk跑在常驻进程com.android.phone进程中,Telecom.apk跑在system进程中。框架包括包括 telephony fw、telecom fw。Code分别位于frameworks/opt/telephony、frameworks/base/telecomm。

        Android 5.0是 只有Dialer和TeleService 这个两个APP。Google为了解除通话app和系统框架的耦合,Android 6.0新增了Telecom apk。并提供系统接口设置默认的通话APP。具体逻辑在Telecom.apk中。

2.1、Telecom的启动过程

       虽然 Telecom app设置了android:directBootAware="true",提前启动属性。

       但是将telecom service注册并拉起,并不是AMS执行Telecom app所执行的,而是在开机时框架执行的,具体流程如下。

 相关开机Log打印如下

2.2、TeleService的启动过程

      TeleService一般也称为phone进程, phone进程设置了android:directBootAware="true",系统启动完成后,会将phone进程拉起。

      phone进程的启动过程大致如下,android版本不同,细节处还有所差异。

相关启动Log如下

2.3、RILD的启动 

      不同平台,RILD启动不一样,需要参考不同平台代码,如有兴趣,可以参考此案例分析过程。

MTK RILD 无法启动问题分析_mtkrilj-CSDN博客

3、去电流程

其中,蓝色表示普通CS通话,红色表示VOLTE通话

3.1、Dialer->Telecom

        通话流程比较复杂,Dialer调用TelecomService服务的placeCall来进行通话。

        Telecom app 中CallsManager会执行startOutgoingCall 主要建立通话Call对象,实现Dialer和Telecom双向Binder通信。 其bind详细流程如下。

        Telecom 保存了Dialer的IInCallService 对象用于通知通话状态,而Dialer则保存了Telecom的的IInCallAdapter对象用于操作通话,如暂停挂断,DTMF等,实现两个进程间双向通信。

3.2、Telecom->Telephony->Framework

        placeOutgoingCall主要建立通话Call对应框架Connection,实现Telecom和TeleService双向Binder通信。

3.3、 Framwork->IMS

        framework中创建ImsCall对象,与IMS apk中的ImsCallSessionProxy进行双向通信,ImsCall中保存 IMS apk中的ImsCallSession对象,ImsCallSessionProxy中保存ImsCallSessionListener进行双向通信,其具体类图如下。

3.4、相关Log如下

4、来电流程

其中,蓝色表示普通CS通话,红色表示VOLTE通话

4.1、IMS->Framwork

4.2、Telephony->Telecom->InCallUI

4.3、相关Log如下

5、三方通话和电话会议

5.1、三方通话

        通话支持一路Active状态,一路Hold状态。用户可以在两路通话之间进行切换。

//Dialer三方
12-28 15:27:58.334 I/DialerCallList(21480): com.android.incallui.call.CallList.onUpdateCall:845 [DialerCall_6, ONHOLD, [Capabilities: CAPABILITY_SUPPORT_HOLD CAPABILITY_MUTE CAPABILITY_SUPPORTS_VT_REMOTE_RX CAPABILITY_SUPPORTS_VT_REMOTE_TX CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL], [Properties:], children:[], parent:null, conferenceable:[Call [id: TC@12, state: ACTIVE, details: [i

相关文章:

Telephony Call

1、Telephony 架构 Telephony整体架构和Android架构一样的,包括APP层,框架层,HAL层,内核层。 其中HAL层不同平台实现方式不同,其中MTK SPRD 平台使用AT通道的方式实现,高通使用QMI方式实现。 2、通话业务介绍 APP包括Dialer.apk、TeleService.apk、Tele…...

Python--TCP/UDP通信

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.客户端与服务端通信原理 1. 服务器端 服务器端的主要任务是监听来自客户端的连接请求,并与之建立连接,然后接收和发送数据。 创建套接字:首先&#xff0…...

【已解决】请教 “Sa-Token 集成 xxl-job,报错:非 web 上下文无法获取 HttpServletRequest” 如何解决

1. xxl-job 报错日志 2024-09-11 17:19:04 [com.xxl.job.core.thread.JobThread#run]-[133]-[xxl-job, JobThread-3-1726046344528] <br>----------- xxl-job job execute start -----------<br>----------- Param: 2024-09-11 17:19:04 [com.xxl.job.core.thread…...

Redis——常用数据类型string

目录 常用数据结构&#xff08;类型&#xff09;Redis单线程模型Reids为啥效率这么高&#xff1f;速度这么快&#xff1f;&#xff08;参照于其他数据库&#xff09; stringsetgetMSET 和 MGETSETNX&#xff0c;SETEX&#xff0c;PSETEXincr&#xff0c;incrby&#xff0c;decr…...

架构设计:负责网络、定时、坐下、站起、重连等,支持多类游戏的无锁房间

本文首发在这里 重中之重就是想实现无锁&#xff01;无锁&#xff01;无锁&#xff01; 源码 servergolang 预计还会实现gate_server&#xff0c;接受并保持websocket长连接&#xff0c;按需双向流到game_server进行消息转发 未来上述服务均会以容器的形式由k8s自动化部署、…...

个人随想-gpt-o1大模型中推理链的一个落地实现

​首先祝大家中秋节快乐。 最近openai又推出了新的模型openai o1​还有它的mini版。官网的介绍&#xff0c;就是它的推理能力很强&#xff0c;比gpt-4o​有很大的提升。 最近也跟同行在聊这个o1&#xff0c;​看看落地方面有哪些可行性。在我们自己的实验上&#xff0c;把o1用…...

python解析ip范围,判断ip是否在ip范围内

目录 1. 背景 2. 代码使用示例 2.1 分割ip&#xff0c;横杠 &#xff08;-&#xff09; 的ip范围 2.2 判断ip在掩码&#xff08;/&#xff09;的范围内 2.3 判断ip在横杠&#xff08;-&#xff09;的范围内 2.3.1 格式&#xff1a;192.168.1.1-192.168.1.10 2.3.2 格式&…...

Springboot错误日志切面,找到post请求体被消费后的数据

问题记录&#xff1a;测试环境接口报错&#xff0c;日志里没有请求参数等信息&#xff0c;于是写了一个切面&#xff0c;但切面中获取不到 request的请求体&#xff0c;因为 post 请求体只能被消费一次&#xff0c;于是找解决办法 解决方法 既然 request 被消费了导致对应的请…...

【二十】【QT开发应用】listwidget右键菜单和删除item

创建项目&#xff0c;添加资源文件 在项目文件夹中创建resources资源文件夹。 在vs中打开qrc文件&#xff0c;选择添加资源文件。 选择我们resources资源文件中的所有文件作为资源文件。 最后不要忘记点击保存。 向ListWidget控件添加item 右键菜单 在.h文件中添加QMenu头…...

LabVIEW机动车动态制动性能校准系统

机动车动态制动性能测试系统通过高精度的硬件设备与LabVIEW软件的紧密配合&#xff0c;实现了对机动车制动性能的精确校准与评估。系统不仅提高了测试的精确性和效率&#xff0c;而且具备良好的用户交互界面&#xff0c;使得操作更加简便、直观。 项目背景 随着机动车辆数量的…...

Linux(CentOS8)服务器安装RabbitMQ

我安装了很久都没有成功, 各种问题, 每次的异常都不一样, 现将成功安装过程做个总结 安装前工作 确保已经安装了一些基础工具和组件库 下载安装包 https://www.erlang.org/patches/otp-24.3.4.5 https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.15/ra…...

R语言进行无序多分类Logistic回归

在临床研究中&#xff0c;接触最多的是二分类数据&#xff0c;如淋巴癌是否转移&#xff0c;是否死亡&#xff0c;这些因变量最后都可以转换成二分类0与1的问题。然后建立二元logistic回归方程&#xff0c;可以得到影响因素的OR值。但有时我们也会接触到多分类结局数据&#xf…...

Maven从入门到精通(三)

一、Settings 配置 settings.xml 用来配置 maven 项目中的各种参数文件&#xff0c;包括本地仓库、远程仓库、私服、认证等信息。 全局 settings、用户 setting、pom 的区别&#xff1a; 全局 settings.xml 是 maven 的全局配置文件&#xff0c;一般位于 ${maven.home}/conf…...

Red Hat 和 Debian Linux 对比

原图的作者(https://bbs.deepin.org/post/209759) Red Hat Enterprise Linux https://www.redhat.com/ CentOS Linux https://www.centos.org/ Fedora Linux https://fedoraproject.org/ Debian https://www.debian.org/ Ubuntu https://cn.ubuntu.com/ https://ubuntu.c…...

Axure设计之全屏与退出全屏交互实现

在Axure RP中&#xff0c;设计全屏与退出全屏的交互功能可以极大地提升用户体验&#xff0c;尤其是在展示产品原型或进行演示时。本文将详细介绍如何在Axure RP中通过结合JavaScript代码实现全屏与退出全屏的交互效果。 ​ Axure原型设计web端交互元件库&#xff1a;https://…...

如何测试出自己电脑的网络速度(网速)?

首先电脑上要下载一个这样的一个电脑软件&#xff1a;360安全卫士 1、打开软件之后&#xff0c;选择【网络安全】 2、选择【宽带测速器】 3、点击之后&#xff0c;即可开始检测当前网络速度&#xff0c;等待大概十几秒后会出现结果,如下&#xff1a; 位置①&#xff1a;显示…...

如何利用AI进行有效的科技产品发布

如果你们公司即将推出一款具有颠覆性的软件&#xff0c;你大概已经了解了科技在现代市场中的价值。 但像AI这样的技术不仅仅是有效的产品组成部分&#xff0c;它们还可以帮助将这些产品推向客户&#xff08;或安装到他们的电脑上&#xff09;。 Kuno Creative明白AI在科技营销…...

二层、三层网络基本原理

文章目录 二层网络整体拓扑相关配置配置namespace创建switch创建veth设备配置veth的IP启动veth 测试 三层网络配置vm1配置vm2配置 测试 二层网络 我们用Linux bridge模拟现实中的switch&#xff0c;用namespace模拟连接在交换机上的pc 整体拓扑 ------------------ ----…...

全面掌握 Jest:从零开始的测试指南(上篇)

随着JavaScript在前后端开发中的广泛应用&#xff0c;测试已成为保证代码质量的关键环节。 为什么需要单元测试 在我们的开发过程中&#xff0c;经常需要定义一些算法函数&#xff0c;例如将接口返回的数据转换成UI组件所需的格式。为了校验这些算法函数的健壮性&#xff0c;部…...

Go 交叉编译

Mac 下编译 Linux 和 Windows 64位可执行程序 Linux&#xff1a; CGO_ENABLED0 GOOSlinux GOARCHamd64 go build main.go Windows&#xff1a; CGO_ENABLED0 GOOSwindows GOARCHamd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 Mac: CGO_ENABLED0 G…...

goctl安装失败

今天遇到一个很奇怪的问题 在阿里云的ubuntu服务器上远程安装goctl&#xff1a;go install github.com/zeromicro/go-zero/tools/goctllatest&#xff0c;后面会断开ssh连接&#xff0c;就再也连不上了&#xff0c;connecting with ssh timed out。在阿里云的workbench上连接显…...

DebateGPT:通过多智能体辩论监督微调大模型

人工智能咨询培训老师叶梓 转载标明出处 这些模型的训练通常依赖于资源密集型的人工反馈&#xff0c;这不仅成本高昂&#xff0c;而且耗时。为了解决这一问题&#xff0c;一篇名为《FINE-TUNING LARGE LANGUAGE MODELS WITH MULTI-AGENT DEBATE SUPERVISION》的论文提出了一种…...

【最新综述】基于深度学习的超声自动无损检测(下)

4.Levels of automation 5.Basic axioms for DL-based ultrasonic NDE 在回顾了最新技术和每个自动化级别的贡献之后&#xff0c;我们不难发现&#xff0c;目前的数字语言方法论在不同论文之间存在着很大的差异。例如&#xff0c;有些作者提出了同时处理不同步骤的模型[121]&…...

kali——tshark的使用

目录 前言 使用方法 tshark提取流量为文档 前言 tshark 是一个命令行的网络分析工具&#xff0c;它用于捕获和分析网络流量。它支持多种网络协议&#xff0c;包括 TCP、UDP、ICMP 等。Tshark 可以用于调试网络问题、进行安全审计、分析应用程序性能等。 在 Kali Linux 中&…...

TortoiseSVN图标不显示的解决

解决办法一:修改svn软件的图标设置 1、选中一个文件夹或在桌面空白处,右击进入svn的setting 2、进入setting->Icon Overlays,Status cache选择Default或shell,然后点击应用 3、查看文件,图标可以正常显示 解决办法二:修改注册表的文件夹顺序 问题现象: 1、svn一直…...

Oracle 11gR2打PSU补丁详细教程

1 说明 Oracle的PSU&#xff08;Patch Set Update&#xff09;补丁是Oracle公司为了其数据库产品定期发布的更新包&#xff0c;通常每季度发布一次。PSU包含了该季度内收集的一系列安全更新&#xff08;CPU&#xff1a;Critical Patch Update&#xff09;以及一些重要的错误修…...

2.4 卷积1

2.4 卷积1 2.4 卷积 在了解了系统及其脉冲响应之后&#xff0c;人们可能会想知道是否有一种方法可以通过任何给定的输入信号&#xff08;不仅仅是单位脉冲&#xff09;确定系统的输出信号。卷积就是这个问题的答案&#xff0c;前提是系统是线性且时不变的&#xff08;LTI&…...

OA项目值用户登入首页展示

1.什么是OA 办公自动化(Office Automation,简称OA)是将现代化办公和计算机技术结合起来的一种新型的办公方式。办公自动化没有统一的定义,凡是在传统的办公室中采用各种新技术、新机器、新设备从事办公业务,都属于办公自动化的领域。通过实现办公自动化,或者说实现数字化…...

如何关闭前端Chrome的debugger反调试

1、禁用浏览器断点 2. 把控制台独立一个窗口...

硬件工程师笔试面试——晶振

目录 13、晶振 13.1 基础 晶振原理图 晶振实物图 13.1.1 概念 13.1.2 工作原理 13.1.3 应用领域 13.1.4 产品类型 13.2 相关问题 13.2.1 晶振的工作原理是什么,它如何保证频率的稳定性? 13.2.2 在工业控制领域,晶振是如何确保精确度的? 13.2.3 晶振的Q值是如何…...