Android call 流程以及其他case整理(1)--前期概括

  细想下从毕业到现在已经有4年了,Tele杂七杂八的各方面都做了些,其中Call属于做的最久的。但一直只停留在开发需求以及fix bug的阶段,一直没有好好的整理下。趁此项目空闲期间,整理下Call的各个流程以及之前项目上的各种需求以及各种古怪的case.现阶段能想到的有以下几类:

    1.前期概括

    2.MO call

    3.MT call

    4.Conference call

    5. VT call

    6. 账户选择

    7.其他case

往后就大致按照这个顺序来总结在Call遇到的各种问题,算是做个总结.


前期概括

 1. 模块划分

      在Call的过程中,主要涉及到模块分为以下几部分:

名称 作用
Dialer  拨号 & 显示call log 
InCallUI 显示通话界面 & 通话界面button操作
Telecomm 逻辑处理
Telephony  逻辑处理
Tele/FW 逻辑处理

2.各模块进程

   各模块的进程名称如下

模块 进程
Dialer com.android.dialer
InCallUI com.android.incallui
Telecomm com.android.server.telecom
Telephony com.android.phone

3.查看进程

   通常在解决问题时,需要查看某个模块的进程,其命令是:adb shell ps 

得到的参数意义:

参数 解释
USER 进程当前用户
PID Process ID,进程ID
PPID  Process Parent ID,进程的父进程ID
VSIZE  Virtual Size,进程的虚拟内存大小
RSS  Resident Set Size,实际驻留”在内存中”的内存大小
WCHAN  休眠进程在内核中的地址
PC  Program Counter
NAME  进程名

4.名词解释

名词 解释
Call 某一通电话
MO Outgoing Call
MT InComing Call
Conference 电话会议
Connection 链接(注释1)
VILTE Video call over LTE
VOLTE Voice call over LTE
CallState 当前Call的状态(注释2)
PhoneState 当前设备的状态(注释2)

 注释1:此处的connection 要与区分开。一通call最多可以有6个connection。比如说A给B打一通电话,那么此时就是一通Call,一个connection.然后Ahold了这通电话,再打电话给C,那么此时就是一通Call,两个Connection.最后A merge了这两通电话,merge成功后,就只有一通Call了(只不过这个Call的参与者是A,B,C三方),但是connection却有两个(?)

注释2 : CallState 是表示当前这通call的状态,这个主要是供内部(Telephony)使用的,根据Call的状态来更新状态等等;而PhoneState则是表示当前设备的状态,这个是提供给外部使用的,比如music就要监听Phone的状态来判断是否需要中断播放音乐。

猜你喜欢

转载自blog.csdn.net/Clear_ws/article/details/81296860