1.1 目录结构 

packages/apps/Dialer+InCallUI      

packages/services/Telecomm    packages/services/Telephony 

framework/base/telecomm        framework/opt/telephony

(vendor/…/ims Ims Call)

Dialer  (dialer进程 )拨打电话的入口,来电不会经过Dialer。但是拨打电话的出口不光是Dialer,在联系人和短信里也有拨打电话的出口。

InCallUI (dialer进程) 负责显示通话界面的信息,来电信息。

Telecomm(system_process和telecomm:ui进程)处理Intent,发送广播,设置call的状态,audio状态。 

Telephony ( phone进程) 向下层传递拨号,注册了很多广播,申请很多权限,service data sms wap network等。

telecomm(system_process)提供placeCall的接口,创建outgoingCall的connection,通知上层成功建立connection

telephony (system_process)拨号也就是dial命令的下发,但是如果是Ims网络就会有下面一步

Vendor/ims(phone进程)   创建ImsConnection,ImsCall,拨号.

1.2 框架结构

Android Dialer--通讯整体过程分析_Android

这只是框架上的一个大致结构, 在实际的流程中并不一定是自上而下或者自下而上的,也有可能跳过某个模块直接传递信息。

比如在Dialer拨号的时候,就是直接调用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卡信息)

Android 8.0 Dialer & telephone 分析  (Android8.0来去电分析+ RIL框架)

Android 7.0 Dialer & telephone分析