时间:2015-05-05 来源:

Android4.4KitkatPhone工作流程浅析(十二)__4.4小结与5.0概览 【编程语言】

前置文章: 《Android 4.4 Kitkat Phone工作流程浅析(一)__概要和学习计划》 《Android 4.4 Kitkat Phone工作流程浅析(二)__UI结构分析》

图 11 Android 5.0 MT Flowchart

图 5 Multiple calls UI (pictrue from @Eric Li)

《Android 4.4 Kitkat Phone工作流程浅析(九)__状态通知流程分析》

Telecom简介        在Android 5.0中新增了Telecom Service ( packages/services/Telecomm )和Telecom Framework ( framework/base/telecomm ),这两部分由Telephony Service分离而来,网页外包接活虽然在Android 5.0 中Telephony Service依然存在,网页切图价格但所负责事务却有所改变.

图 3 InCallUI InCall process (pictrue from @Eric Li)

《Android 4.4 Kitkat Phone工作流程浅析(八)__Phone状态分析》

       Telephony Phone中的Call状态由协议规定,div+css制作对于新增的PRE_DIAL_WAIT是无法在Modem端改动的,div+css报价因此只能在Framework中进行修改并做相应的处理.Android 5.0 中Call 各个状态及其对应关系如图所示:

       其中,兼职手机网页制作负责通话数据的传递以及控制指令的下发.而Telecom Service中的CallsManager则负责所有通话数据以及指令的处理,web切图报价并将结果传递给Telecom Framework.

7. InCallState (InCallPresenter). InCallActivity的状态,psd转html用于控制UI的更新;

       Android 5.0 中,html切图制作Telephony Service也就是原来的TeleService,部分功能被提取到了Telecom Service和Telecom Framework中.整个Telephony Phone模块包括了5个部分:InCallUI、Telecom Service、Telecom Framework、Telephony Service、Telephony Framework.其中新增的Telecom Framework被打包到framework.jar中,网页外包接活Telecom Service则打包到Telecom.apk里.

图 1 Android Telephony Phone Architecture Evolution

       MO流程分为三个步骤web前端制作,Start InCallUI,Update Call State.在Android 4.4的流程中,div前端切图Update Call State包含了Start InCallUI,而在Android 5.0 中很各个步骤非常明确.从上图中可以看到,web切图报价无论是InCallUI、Telecom Service还是Telephony Service均没有直接交互符合w3c标准,所有的交互都是与Framework进行.最重要的一点是:InCallUI不再与Telephony Service或者Telecom Service绑定,符合w3c标准各个模块非常独立.

       Android 4.4 Telephony Phone架构非常清晰网页外包接活,各个子模块也较为独立.如Telephony Service和InCallUI通过CallHandlerService、CallHandlerServiceProxy以及CallCommandClient、CallCommandService进行交互,jpg或psd转html主要涉及com.android.incallui(InCallUI)、com.android.dialer(Dialer)、com.android.phone(Telephony Service)三个进程.虽然架构上比较清晰web前端制作,但InCallUI和Telephony Service绑定得太紧,web前端制作同时Telephony Service也非常臃肿.

Android 5.0 InCallUI简介 Android 5.0 对InCallUI界面进行了调整以适应Google的Material Design.

图 4 Incoming call (pictrue from @Eric Li)

图 7 Android 4.4 MO/MT flowchart

       从Android 4.2到5.0,Telephony Phone模块愈加细化,兼职手机网页制作各个子模块的功能越愈发精简.当然web切图报价,这符合面向对象的要求,网站div+css但也导致各个模块间交互也相应增加.整个Telephony Phone演进过程可以简单的概括为:

       图中绿色箭头标示.在Android 4.4中符合w3c标准,Call状态从IDLE变为DIALING也属于Call State变化范畴,符合w3c标准因此Update Call State流程与Start InCallUI流程一致网页外包接活,但Start InCallUI只会执行一次,网页外包接活而Update Call State在通话过程中会多次执行web前端制作,如Call 状态从ACTIVE转为HOLD等.

《Android 4.4 Kitkat Phone工作流程浅析(七)__来电(MT)响铃流程》

图 6 Conference calls UI (pictrue from @Eric Li)

②. Start InCallUI

       当用户有多个账户且没有设置默认账户时,div+css制作拨号后会弹出提示框让用户选择账户(互联网账户/SIM1/SIM2),此时状态就为WAITING_FOR_ACCOUNT即等待用户输入.Android 5.0 中,兼职手机网页制作InCallUI并非等待Call状态改变后再启动web切图报价,之后会转为OUTGOING状态.

图 15 Android 5.0 Call State Overview (AOSP)

小结        Android 5.0 Telephony Phone无论从UI还是架构上都与之前相差很大.架构上的差异主要体现在新增了Telecom Service和Telecom Framework,并引入了Heads-up Notification来电界面.

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

       图中粉色箭头标示.Dial是从Dialer的Dialpad中发起的网页外包接活,发送广播到Telephony Service中继续进行处理.

       在Android 4.4 中,网页外包接活MO流程可以分为两步web前端制作,即Dial和Update Call State (Start InCallUI包含在Update Call State流程中).MT流程亦分为两步,web前端制作即Update Call State和Ringing.

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

4. CallState (Telecom Framewok). 由于上层改动引入了PRE_DIAL_WAIT等状态承接网页制作,但这种状态并不存在于Telephony Framework Call.State中,div前端切图因此使用CallState来转换;

概述        在Android 4.4 中web切图报价,Google 对Telephony_Phone进行了重构,web切图报价前面也通过一些列文章分析了Android 4.4 中Telephony Phone的工作流程.但在2014年10月15日符合w3c标准,Google发布了Android 5.0 预览版,符合w3c标准正式版也在一个月之后发布.Android 5.0 变化非常大网页外包接活,无论从UI风格还是功能实现上,jpg或psd转htmlGoogle都进行了大刀阔斧的修改.同时web前端制作,Telephony_Phone模块的架构也再次进行了调整,web前端制作调整之后的Telephony_Phone各个模块之间耦合性更低承接网页制作,分工也更为明确,兼职手机网页制作但整个流程却变复杂了许多.

       其中msg_type是MTK的+ECPI指令中所携带的参数.

图 9 Android 5.0 MO flowchart

①. Ringing

通过上面的分析可以知道:

6. Call.State (InCallUI). 定义InCallUI中Call的状态;

       文中涉及资源免积分下载:戳这里

       Android 5.0 MO详细流程分为四个步骤web切图报价,执行Dial Action,更新Dialing状态,符合w3c标准Call 状态改变更新.从上图可以看到网页外包接活,InCallUI在Call 状态改变之前就已经启动了,网页外包接活在Call 状态改变为Dialing后再次更新界面.

图 13 Android 4.4 Call State Overview (MTK)

《Android 4.4 Kitkat Phone工作流程浅析(十一)__PSensor工作流程浅析》

       图中绿色箭头标示.在Android 4.4中web前端制作,当Dial发起并到达RIL之后,div+css制作RIL会将Dial请求下发给Modem端承接网页制作,最终到达InCallUI并根据当前通话状态(DIALING)启动界面并显示相应内容.

图 12 MT Ringing and Update Call State Flowchart

       Android 5.0 中web切图报价,Telephony Framework Call.State 之间的转换关系如下图所示,web切图报价与Android 4.4 一致:

图 10 MO Dial / Start InCallUI /Update Call State Flowchart

       从图中可以看到Telephony Phone架构从Android 4.4时的三层变成了Android 5.0时的四层符合w3c标准,其中Android 5.0 中新增部分由原来的Telephony Service分离而来.从进程模型上分析,html切图制作在Android 5.0 中网页外包接活,Telephony Phone的工作流程主要包含:com.android.incallui(InCallUI)、com.android.dialer(Dialer)、com.android.server.telecom(Telecom Service)、com.android.phone(Telephony Service)四个进程.

①. Dial

       MO即Mobile Origination Call主叫,网页外包接活也就是去电.主要包括:拨号web前端制作,启动UI界面,web前端制作更新通话状态;MT即Mobile Termination Call被叫承接网页制作,也就是来电.主要包括:响铃,div前端切图启动UI界面web切图报价,更新通话状态.在Android 4.4 中,web切图报价整个MO/MT执行流程如图7:

       Android 5.0 Telephony Phone MO流程改动较大符合w3c标准,关键步骤如下图所示:

       Android 5.0 Telephony Phone MO详细流程如下图所示:

       虽然Android 5.0 Telephony Phone架构变得更加复杂,符合w3c标准不过代码中仍然有部分接口并未使用网页外包接活,随着Android 5.0中Telephony Phone架构的变更web前端制作,Call 状态也随之改变.如下图所示为Android 4.4中各个Call状态及其对应关系:

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

1. DriverCall.State. 用于描述modem的状态;

       图中橙色箭头所示.Ringing实际上也是Call 状态的一种类型,web前端制作因此也是从Modem端发起并传递给RIL,之后逐级上报并最终显示到InCallUI中.与Update Call State唯一不同的是,兼职手机网页制作MT会在CallNotifier中调用Ringer执行播放铃声操作.

       Telecom是对Telecom Service和Telecom Framework的统称web切图报价,其主要负责所有数据业务.上层APP(InCallUI)接触到的Phone、Call以及Connection对象,网站div+css实际上是Telecom Framework的Phone、Call和Connection对象符合w3c标准,并不是Telephony Framework中的GSMPhone、GsmCall和GsmConnection.

《Android 4.4 Kitkat Phone工作流程浅析(十)__"通话显示"查询流程》

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);因此,符合w3c标准锁屏会被解除并显示InCallActivity.

本文来自http://blog.csdn.net/yihongyuelan 转载请务必注明出处 下图是Android 4.2 到5.0,Telephony Phone模块结构变化示意图:

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

       架构的变化也导致了MO/MT流程的变更,网页外包接活新流程相较于原来更加复杂web前端制作,如果Framewrok公开相应的接口(Call/Phone/InCallServiced等),三方APP可以轻松实现InCallUI的功能.

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

③. Update Call State

       在Android 5.0 中Telephony Service分离了部分功能到Telcom Service和Telecom Framework中.Android 4.4 与 5.0 Telephony Phone架构对比,兼职手机网页制作如下图所示:

Android 5.0 中Call State的种类包括:

builder.setFullScreenIntent(PendingIntent intent, boolean highPriority)        如果弹出Heads-up Notification时系统处于锁屏状态,web切图报价NotificationMangerService会执行PendingIntent所指定的Action.如:锁屏时来电则会启动InCallActivity,又因为InCallActivity具有以下属性:

2. Call.State (Telephony Framework). 用于描述Call状态,html切图制作这里的Call包含GsmCall、CdmaCall;

5. Call (Telecom Framework). Telephony Framework Call.State的进一步抽象网页外包接活,来源于CallState的转换,网页外包接活也是InCallUI中Call.State的来源;

图 14 Android 5.0 Call State distribution diagram

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

       在Android 5.0 Telephony Phone MT流程中web前端制作,Start InCallUI依然包含在Update Call State流程中,web前端制作同时在CallsManager中会调用Ringer执行相关响铃的操作.

图 16 Telephony Call.State conversion relationship

MT关键步骤如下

       在Android 5.0中承接网页制作,只要在非LockScreen界面来电web切图报价,当触发时会在状态栏弹出以提示用户.任何一个Notification都可以采用Heads-up的方式显示符合w3c标准,只需给Notification.builder设置FullScreenIntent属性:

3. Connection (Telecom Framework). 用于描述每一个Connection的状态,符合w3c标准每一个Connection状态来源于所属Call的状态;

       在Android 4.2 以及之前的版本中网页外包接活,Telephony Phone模块主要涉及Phone和Contacts以及Telephony Framework这几个部分.在Android 4.4 中,jpg或psd转htmlPhone模块被InCallUI和TeleService取而代之web前端制作,其中InCallUI被打包到Dialer.apk中.InCallUI主要负责UI显示部分,web前端制作TeleService则负责逻辑处理.

MO关键步骤如下

②. Telephony Framework Call.State和DriverCall.State没有改动

图 2 Simplified Phone Architecture Evolution

Android 4.4与5.0 MO/MT对比        之前已经分析过Android 4.4 的MO/MT过程承接网页制作,具体可以参看:

       Android 5.0 中Call 状态分布以及转换如下图所示:

图 8 Architecture difference(Simplified)

①. InCallState新增两个状态,兼职手机网页制作即PENDING_OUTGOING和WAITING_FOR_ACCOUNT

       Android 5.0 Telephony Phone MT流程关键步骤以及详细流程web切图报价,如下图所示:

点击次数:8957
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日基于AndroidSQLite的升级详解2014年01月30日RabbitMQ官网教程---路由 【编程语言】2015年01月12日Codeforces536BTavasandMalekas求自身首尾的重叠位置KMP【编程语言】2015年04月17日PHP开发搜索引擎技术教程2014年01月28日wifi连接学习 【编程语言】2015年04月13日Ubuntu12.04安装BL-LW05-HUSB无线网卡驱动【移动开发】2014年12月10日activity页面多次反复切换会变卡, 【编程语言】2015年08月05日我的java学习笔记(21)关于框架定位 【编程语言】2015年04月08日使用android传感器自己编写温度计,湿度计支持android5.0 【编程语言】2015年05月12日如何用WPS进行跨文档应用格式刷2014年01月28日PHP图片处理类phpThumb参数用法介绍2014年01月29日java类中元素初始化顺序详解2014年01月30日关于linux的历史【系统运维】2015年08月25日WINDOWS系统下怎样配置squid做CDN的简明图解2014年01月30日JavaNetworkingandProxies(译文) 【数据库】2014年12月03日iOS:使UITableView一直显示最后一个Cell 【移动开发】2014年11月19日总结一下materialdesign控件Tablayout 【编程语言】2015年08月25日flex4flash与容器的信息交互 【移动开发】2015年08月05日【LeetCode】Pow(x,n)【研发管理】2015年04月27日从用户角度设计APP需要注意哪些问题【编程语言】2015年05月18日杯具,万达电商又换CEO【移动开发】2015年06月11日AndroidStudio使用技巧系列教程(三) 【系统运维】2015年07月09日H3C子接口配置要点及实例说明 【编程语言】2014年12月18日使用IntelliJIDEA开发erlang项目【系统运维】2015年03月12日习题10-12汉堡UVa557 【数据库】2015年04月24日Excel使用ADO调用SQLServer存储过程 【Web前端】2015年03月27日HDOJ题目3033Ilovesneakers!(分组背包)【编程语言】2015年03月09日php设计模式一(命名空间类自动载入PSR标准) 【编程语言】2015年05月06日12.首页一级分类的显示【编程语言】2015年04月29日查看80端口是否被占用【移动开发】2015年06月25日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)