第二章:CallsManager调用 startOutgoingCall开始拨号流程之一CallsManager完成每路电话的控制管理
来源:互联网 发布:sql 新建存储过程 编辑:程序博客网 时间:2024/06/14 02:29
一.CallsManager完成每路电话的控制管理
概述:上面我们介绍了两路通话流程,在这里我们先介绍第一路进程,就是拨号显示通话界面过程,前面介绍了拨号界面如何到达CallsManager这一层,在这里我们将继续分析下去,看看除了去做显示界面的动作还做了哪些事情,其实,这一路进程说是做了显示通话界面的动作,确切的说应该是去做了每路通话的逻辑处理,状态保存以及激活整个通话架构的动作,而显示通话界面只是个最终的结果而已,中间做的事情远远比显示界面要复杂而且重要的多,我们知道,拨号打电话过程是需要很多类来辅助完成的,而在系统中如何管理每路通话显得尤为重要,在这个过程中首先我要说一点,我们的系统最多支持三路通话:foregroupcall、backgroupcall、ringingcall,即第一路通话,第二路通话,来电通话,而通话连接最多支持7个连接,接下来我们具体分析这个CallsManager调用 startOutgoingCall之后做了哪些事情。
1).上面我们介绍了从拨号盘开始的拨号过程,直到CallsManager我们介绍了是怎么去调用显示通话界面的,在这中间其实是做了很多逻辑的处理,我们一一分析,在这里我们就不从头开始分析了,我们从CallsManager调用 startOutgoingCall方法中开始分析。
2). CallsManager.java中,进入startOutgoingCall方法,在这里构造了一个Call类的实例,这个Call是packages/services/Telecomm模块下的Call.java类,不过在这里:call.setExtras(extras),对传递进来的 clientExtras进行了一次保存,所以这个call可以暂时不用管,继续在最后调用addCall(call)方法;
进入addCall()方法,在这里,对call进行了保存,保存在一个列表mCalls 中,以待后用,继续:
private void addCall(Call call) {
Log.v(this,"addCall(%s)", call);
call.addListener(this);
mCalls.add(call);
// TODO: UpdatemForegroundCall prior to invoking
// onCallAdded for callswhich immediately take the foreground (like the first call).
for (CallsManagerListenerlistener : mListeners) {
listener.onCallAdded(call);
}
updateCallsManagerState();
}
这里 listener是CallsManagerListener类型的,是从mListeners列表中遍历出来的,构造方法中mListeners.add(mInCallController),这个 mInCallController是InCallController类型的,InCallController最终继承了CallsManagerListener,也就是说listener.onCallAdded(call)最终调用了InCallController中实现的 onCallAdded方法来保存call实例。
- 第二章:CallsManager调用 startOutgoingCall开始拨号流程之一CallsManager完成每路电话的控制管理
- 第二章:CallsManager调用 startOutgoingCall开始拨号流程之三InCallService完成framework层每路通话转换
- 第二章:CallsManager调用 startOutgoingCall开始拨号流程之二InCallController.java类进行framework层service绑定
- 第二章:CallsManager调用 startOutgoingCall开始拨号流程之四InCallController.java绑定InCallService.java实现进程间Binder通信
- Android M上VideoCall中Audio的管理(2016.05.27 新增CallsManager部分)
- Telecom - 002 - CallsManager
- symbian 下面调用电话拨号的方法
- symbian 下面调用电话拨号的方法
- symbian 下面调用电话拨号的方法
- Android 调用系统的电话拨号器
- Android的第二个应用---电话拨号器
- 调用电话拨号器监听的四种方式
- 拨号调用流程
- 接电话、拨打电话的流程管理
- 电话拨号器的实现
- 调用系统拨号键拨打电话
- Android调用拨号界面、拨打电话功能
- Android调用拨号界面、拨打电话功能
- “检测到有潜在危险的 Request.Form 值.”这个错误提示
- 【PHP入门篇】2.变量--慕课网【学习总结】
- intent传递对象
- Fragment在低版本中的简单创建使用
- MT、MTd、MD、MDd
- 第二章:CallsManager调用 startOutgoingCall开始拨号流程之一CallsManager完成每路电话的控制管理
- 格式化数据#2:图灵奖(A.M. Turing Award)
- ndk-build在CCFLAG中添加-fPIC的作用
- 银行数据库热备份解决方案
- SAP复合角色更改后扩展到派生节点
- 开灯问题
- Caffe学习系列(3):视觉层(Vision Layers)及参数
- 第二章:CallsManager调用 startOutgoingCall开始拨号流程之二InCallController.java类进行framework层service绑定
- Caffe学习系列(4):激活层(Activiation Layers)及参数