先打個(gè)提綱,后續(xù)慢慢整理。
1.1 目錄結(jié)構(gòu)
packages/apps/Dialer+InCallUI? ? ??
packages/services/Telecomm? ? packages/services/Telephony?
framework/base/telecomm? ? ? ? framework/opt/telephony
(vendor/…/ims Ims Call)
????>Dialer? (dialer進(jìn)程 )撥打電話的入口,來(lái)電不會(huì)經(jīng)過(guò)Dialer。但是撥打電話的出口不光是Dialer,在聯(lián)系人和短信里也有撥打電話的出口。
????>InCallUI (dialer進(jìn)程) ? 負(fù)責(zé)顯示通話界面的信息,來(lái)電信息。
????>Telecomm(system_process和telecomm:ui進(jìn)程)? ?處理Intent,發(fā)送廣播,設(shè)置call的狀態(tài),audio狀態(tài)。?
????>Telephony ( phone進(jìn)程) 向下層傳遞撥號(hào),注冊(cè)了很多廣播,申請(qǐng)很多權(quán)限,service data sms wap network等。
????>telecomm(system_process)? 提供placeCall的接口,創(chuàng)建outgoingCall的connection,通知上層成功建立connection
????>telephony (system_process)?撥號(hào)也就是dial命令的下發(fā),但是如果是Ims網(wǎng)絡(luò)就會(huì)有下面一步
????>Vendor/ims(phone進(jìn)程)? ?創(chuàng)建ImsConnection,ImsCall,撥號(hào).
1.2 框架結(jié)構(gòu)

這只是框架上的一個(gè)大致結(jié)構(gòu), 在實(shí)際的流程中并不一定是自上而下或者自下而上的,也有可能跳過(guò)某個(gè)模塊直接傳遞信息。
比如在Dialer撥號(hào)的時(shí)候,就是直接調(diào)用framework/base/telecmm中TelecomManager的placeCall接口撥打電話。
http://blog.163.com/machao_163job/blog/static/2087753220121020101316838/ (SubscriptionManager介紹)?
http://www.voidcn.com/article/p-qtizelbc-ww.html (SubscriptionManager卡信息)
https://blog.csdn.net/u013686019/article/details/71195230 (Subscription和SubscriptionManager)
https://blog.csdn.net/qq_27061049/article/list/5?? (OTA升級(jí)原理)
https://blog.csdn.net/gaugamela/article/category/6384897 (phone數(shù)據(jù)業(yè)務(wù))?
https://blog.csdn.net/linyongan/article/details/53350493(IMS過(guò)程)
https://blog.csdn.net/michael_yt/article/list/1? ?(通話全面分析)
https://blog.csdn.net/meiliqiang/ (通話全面分析+ Volte+ims)?
Android 8.0 Dialer & telephone 分析? (Android8.0來(lái)去電分析+ RIL框架)