本文章代码基于Android 9.0
概述
VoiceCall就是我们通常所说的打电话是基于系统中Telephony框架的具体应用情景,Telephony中涉及的其他通讯功能有ServiceState(服务状态)、DataConnection(数据链接)、SMS(短信)、Contacts(联系人)…这篇文章重点讲解Call(通话)
- MO(Mobile Origination Call)主叫,操作流程:拨号,启动UI界面,更新通话状态。
- MT(Mobile Termination Call)被叫,操作流程:响铃,启动UI界面,更新通话状态。
框架
Android系统中的VoiceCall的组成结构主要由下面几部分构成:
- Dialer(IncallUI) 为用户交互操作提供UI界面
- TeleService 封装了控制,查询Telephony等功能
- Telephony(Framework )提供通话各种功能调用和状态查询,负责上层和Modem的通信
- RIL 负责拨号、Sip、package收发等基本操作
VoiceCall框架图
具体框架图请看下图:
具体各个模块的详细信息请看下表:
Module | Path | Function |
---|---|---|
Dialpad | packages/apps/Dialer/ | 拨号盘 |
CallLog | packages/apps/Dialer/ | 通话记录。其中显示的信息是从数据库中读出来的。在通话结束时,会将Call的信息存储到CallLog数据库中 |
InCallUI | packages/apps/Dialer/ | 通话中的画面显示,在Android原生设计中,该模块只处理界面相关的内容 |
TeleS |