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 框架结构
这只是框架上的一个大致结构, 在实际的流程中并不一定是自上而下或者自下而上的,也有可能跳过某个模块直接传递信息。
比如在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分析