Android 通話介紹

前言

本文代碼基于 Android T。

本文的目的是讓剛接觸這個(gè)模塊的新人對(duì)這個(gè)模塊有個(gè)整體的大概了解,能快速入手分析、解決問(wèn)題。

本文只涉及單通通話,不涉及雙通、三方通話、會(huì)議電話等。

如需查看更詳細(xì)的介紹,請(qǐng)翻閱我其它文章。

整體架構(gòu)

整體架構(gòu)

模塊介紹

Dialer

Dialer 負(fù)責(zé)和用戶交互的功能。

Dialer 模塊主要功能
Telecom

Telecom 負(fù)責(zé)管理所有通話,包括運(yùn)營(yíng)商通話、藍(lán)牙通話。

Telecom 模塊功能介紹
Telephony

Telephony 負(fù)責(zé)向運(yùn)營(yíng)商網(wǎng)絡(luò)發(fā)起通話,并接收來(lái)自運(yùn)營(yíng)商網(wǎng)絡(luò)的通話。

Telephony 模塊主要功能
IMS

IMS 負(fù)責(zé) IMS 通話和 IMS RCS 等功能。

IMS 模塊功能介紹

IMS 架構(gòu)

由于現(xiàn)在大部分通話都是 IMS 通話,本文著重介紹 IMS 通話。

Ims 結(jié)構(gòu)層級(jí)

IMS 啟動(dòng)后會(huì)提供 通話、RCS 等能力,其啟動(dòng)流程如下:

Android 官網(wǎng):imsservice-sequence

簡(jiǎn)述:

ims service結(jié)構(gòu)

通話流程

跨進(jìn)程交互
跨進(jìn)程交互
通話信息更新
通話信息變更
RIL 信息上報(bào)

RIL 信息分為請(qǐng)求返回和自主上報(bào)

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

通話請(qǐng)求的下發(fā)和通話狀態(tài)的更新采用了命令模式觀察者模式

命令模式
觀察者模式
來(lái)電流程
來(lái)電流程
去電流程
撥號(hào)流程
通話信息從 telephony.Connection 到 telecom.Connection
IMS 通話
CS 通話
telecom.Connection 綁定 telephony.Connection
來(lái)電
去電
運(yùn)營(yíng)商通話的通話帳號(hào)注冊(cè)

不管來(lái)電還是去電,在 Telecom 中都需要用到通話帳號(hào):

PhoneAccount 注冊(cè)

視頻通話

怎么區(qū)分是視頻通話還是語(yǔ)音通話?

通過(guò) VideoState 來(lái)區(qū)分是 視頻通話 還是 語(yǔ)音通話:

video 狀態(tài)上報(bào)和下發(fā)
如何傳遞 VideoState 及其它視頻通話操作?
video 信息的進(jìn)程交互
顯示本機(jī)相機(jī)畫面

這個(gè)過(guò)程因?yàn)?Telecom 和 Telephony 主要做一些透?jìng)鞯墓ぷ鳎允÷浴?/p>

視頻通話顯示本機(jī)相機(jī)畫面
顯示對(duì)端相機(jī)畫面
視頻通話顯示對(duì)端相機(jī)畫面
語(yǔ)音升視頻

語(yǔ)音通話升級(jí)成視頻通話 及 視頻通話降級(jí)成語(yǔ)音通話 流程大體相同,這里只列舉一個(gè):

語(yǔ)音升視頻

原創(chuàng)文章,歡迎轉(zhuǎn)載,但請(qǐng)注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容