Android 4.4 Kitkat Phone工作流程浅析(六)__InCallActivity显示更新流程

本文深入分析了Android 4.4 Kitkat中电话框架的InCallActivity显示和更新流程,从Telephony Framework的反馈处理,到TeleService的消息管理,最后详细探讨了InCallUI如何响应并展示通话状态的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本文来自http://blog.csdn.net/yihongyuelan 转载请务必注明出处

本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉。

前置文章:

Android 4.4 Kitkat Phone工作流程浅析(一)__概要和学习计划

Android 4.4 Kitkat Phone工作流程浅析(二)__UI结构分析

Android 4.4 Kitkat Phone工作流程浅析(三)__MO(去电)流程分析

Android 4.4 Kitkat Phone工作流程浅析(四)__RILJ工作流程简析

Android 4.4 Kitkat Phone工作流程浅析(五)__MT(来电)流程分析

概述

        前面五篇文章,将Android 4.4 的MO/MT流程衔接了起来,同时包括了UI结构简单分析,以及RILJ的工作流程分析。本篇以及后续关于Phone的文章,主要是对前面MO/MT主线的补充和说明,用以完善整个MO/MT流程。
        在整个MO/MT流程的分析过程中,遗漏了很多细枝末节,在弄清楚整个MO/MT的始末之后,便发现有一些疑问疑问,因此打算陆陆续续分析一些遗漏的细节。本篇文章的发起缘由很简单,就是想知道InCallActivity是如何显示和更新的,通过分析后发现,现在Android 4.4 的界面更新也是从Modem状态改变发起,并不像以前那样直接更新显示界面。
        从直观上来讲,当用户按下拨号键之后会立刻显示正在呼叫的界面,也就是InCallActivity。在Android 4.2中,这个界面叫做InCallScreen这一点前面的文章已经有提过,InCallScreen会通过上层调用显示出来。而在Android 4.4中,InCallActivity的显示则是由Call状态来决定的,Call的状态可以分为6种: ACTIVEHOLDINGDIALINGALERTINGINCOMINGWAITING,当发起MO流程并且对方还未接通这段时间,Call的状态是DIALING。
        这个DIALING状态是如何反应到界面上的呢?InCallActivity是如何知道当前Call的状态的呢?如果有看过MT流程的童鞋肯定知道,MT流程实际上就包含了Call状态的改变并从底层一路传递到上层,而DIALING的状态也是从底层反馈来的,因此整个流程和MT类似,分为三个部分:Telephony framework、TeleService、InCallUI,如下图:



Telephony Framework接收处理反馈

        通过前面的分析我们知道,所有的状态改变都是由底层Modem发起的,并将相关状态信息反馈到framework层的RILJ中。上层通过AT指令与Modem进行交互,关于AT的一些介绍信息可以看 这里这里以及 这里,本文主要介绍的是InCallActivity的显示更新,那为什么会提到AT指令呢?这得从源头说起。
        当用户发起MO流程之后,告诉Modem执行Dial操作,此时Modem的状态就会随之改变,并将状态改变信息通知到上层,因此这里会涉及到一些系统的radio log,可以看到发起拨号操作的相关重要log信息如下:
01-01 18:11:47.039  1061  1061 D RILJ    :  RIL(1) :[0147]> DIAL
... ...省略
01-01 18:11:47.044   682   692 D use-Rlog/RLOG-AT: AT> ATD13800138000;
01-01 18:11:47.044   682   696 I use-Rlog/RLOG-RIL: RIL_URC2_PROXY wakeup
01-01 18:11:47.044   682   692 D use-Rlog/RLOG-AT: ATD13800138000;
... ...省略 
01-01 18:11:47.047   682   707 D use-Rlog/RLOG-AT: OK
01-01 18:11:47.047   682   707
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值