Android 通话介绍

前言

本文代码基于 Android T。

本文的目的是让刚接触这个模块的新人对这个模块有个整体的大概了解,能快速入手分析、解决问题。

本文只涉及单通通话,不涉及双通、三方通话、会议电话等。

如需查看更详细的介绍,请翻阅我其它文章。

整体架构

整体架构

模块介绍

Dialer

Dialer 负责和用户交互的功能。

Dialer 模块主要功能
Telecom

Telecom 负责管理所有通话,包括运营商通话、蓝牙通话。

Telecom 模块功能介绍
Telephony

Telephony 负责向运营商网络发起通话,并接收来自运营商网络的通话。

Telephony 模块主要功能
IMS

IMS 负责 IMS 通话和 IMS RCS 等功能。

IMS 模块功能介绍

IMS 架构

由于现在大部分通话都是 IMS 通话,本文着重介绍 IMS 通话。

Ims 结构层级

IMS 启动后会提供 通话、RCS 等能力,其启动流程如下:

Android 官网:imsservice-sequence

简述:

ims service结构

通话流程

跨进程交互
跨进程交互
通话信息更新
通话信息变更
RIL 信息上报

RIL 信息分为请求返回和自主上报

Android 官方:RIL_Solicited
Android 官方:RIL_Unsolicited
命令模式 和 观察者模式

通话请求的下发和通话状态的更新采用了命令模式观察者模式

命令模式
观察者模式
来电流程
来电流程
去电流程
拨号流程
通话信息从 telephony.Connection 到 telecom.Connection
IMS 通话
CS 通话
telecom.Connection 绑定 telephony.Connection
来电
去电
运营商通话的通话帐号注册

不管来电还是去电,在 Telecom 中都需要用到通话帐号:

PhoneAccount 注册

视频通话

怎么区分是视频通话还是语音通话?

通过 VideoState 来区分是 视频通话 还是 语音通话:

video 状态上报和下发
如何传递 VideoState 及其它视频通话操作?
video 信息的进程交互
显示本机相机画面

这个过程因为 Telecom 和 Telephony 主要做一些透传的工作,所以省略。

视频通话显示本机相机画面
显示对端相机画面
视频通话显示对端相机画面
语音升视频

语音通话升级成视频通话 及 视频通话降级成语音通话 流程大体相同,这里只列举一个:

语音升视频

原创文章,欢迎转载,但请注明出处。

你可能感兴趣的:(Android 通话介绍)