android4.2 telephone应用层分析
InCallScreen.java
复制通话界面的显示和提供人机交互的接口。进入该界面第一个调用ONCreate。否则进入OnNewIntent,该配置文件是incall_screen.xml,当中incallPanel为通话联系人的信息和状态显示,配置文件为call_card.xml,包括两路通话的view定义;InCallTouchUi显示通过管理的控制UI。相应配置文件为incall_touch_ui.xml;
mhandle的handleMessage方法接收到framework的CallManager发出的不同Phone状态的变化。更新UI。消息类型例如以下:
SUPP_SERVICE_FAILED:弹出mSuppServiceFailureDialog
PHONE_STATE_CHANGED:调用requestUpdateScreen方法请求更新通话界面,发送
REQUEST_UPDATE_SCREEN消息
REQUEST_UPDATE_SCREEN:内部调用UpdateScreen
PHONE_DISCONNECT:通话连接失败时调用。在delayedCleanupAfterDisconnect中退出通话界面
handleOnscreenButtonClick响应通话控制的点击button,涉及通话能力控制的相关处理逻辑
PhoneUtils类中的静态方法。如接听电话、挂断电话、恢复、保持通话等通话控制的操作。
联系人信息:CallCard
通话联系人信息的显示和更新实在InCallScreen的updateScreen中完毕的,调用Callcard的updateState方法,displayMaincallStatus显示更新第一路通话的信息。displayOnHoldCallStatus显示hold通话保持的第二路通话信息。通过PhoneUtils.getCallerInfo获取CallerInfo对象。保存了通话联系人的基本信息。
IncallTouchUI 通话控制:
incomingCallWidget:接通/挂断/短信回复时须要使用;
manageConferenceButton:多方通话的界面跳转控制button,仅仅有在多方通话时才显示。
dialpadButton:也就是显示或隐藏拨号盘(DTMF);
audioButton:开启/关闭扬声器;
muteButton:开启/关闭麦克风静音。开启之后对方无法听到你的声音。
holdButton:开启/关闭呼叫保持。
addButton:添加多路通话。也就是在通话的过程中能够暂停当前通话,拨打还有一路通话并接通;
通话控制相关的控件在IncallTouchUI 的updateState中更新,实现OnTriggerListener接口,该接口为锁屏控制的接口,这里4.2做了个改动。在OnTrigger函数中。区分向上、向左和向右三个方向直接定义0,1,2,而不使用SlidingTab的类。在InCallScreen的OnResume和OnPause中注冊ACTION_HEADSET_PLUG接收耳机免提事件的广播,发送EVENT_HEADSET_PLUG_STATE_CHANGED消息,调用showAudioModePopup显示出菜单,进入InCallTouchUI的onMenuItemClick切换音频输出的策略。
DTMFTwelveKeyDialer
布局文件为dtmf_twelve_key_dialer_view.xml,由输入框dtmfDialerField和12按键dialpad.xml组成。
PhoneGlobals:
4.2中将4.0中的PhoneApp中的内容移到了PhoneGlobals中。
OnCreate中创建mWakeLock和mPartialWakeLock进行Phone应用的电源管理。
获取了mWakeLock后。设置中的休眠时间不起作用,屏幕一直高亮,直到锁释放或者手动按power键。获取了mPartialWakeLock后,此时能够关闭屏幕和键盘灯。但不是立马关闭。直到设置的休眠时间到了。关屏。
Sensor感应器获取手机当前的方位,推断手机是否靠近脸部。
mProximityWakeLock电源唤醒锁,获取之后,关闭屏幕。
MediaButtonBoardcastReceive接收耳机HOOK的广播事件。调用PhoneUtils的
handleHeadsetHook响应耳机的HOOK事件。PhoneAppBoardcastReceive处理Phone应用中杂项的广播事件,像飞行模式、数
据连接、SIM卡状态等变化。
CallNotify:
onNewRingingConnect接收到来电后的处理,调用startIncommingCallQuery查询
联系人信息。通过PhoneUtils的startGetCallerInfo获取GSMConnection的
userData查询 到CallerInfo中。
onPhoneStatechanged通话状态变化的处理。onDisconnect通话连接断开的处理。连接断开有三种类型callLogType:
INCOMMING_TYPE(来电)OUTGOING_TYPE(呼叫)MISSED_TYPE(未接来电)
android4.2 telephone应用层分析的更多相关文章
- android4.3 Bluetooth(le)分析之startLeScan分析
BluetoothAdapter.java中有low enery(le)的一些方法,android提供了这些方法,但源码中并未找到这些方法的调用之处.本文档主要分析这类方法的执行流程,来了解下le到底 ...
- Linux I2C驱动分析(三)----i2c_dev驱动和应用层分析 【转】
本文转载自:http://blog.chinaunix.net/uid-21558711-id-3959287.html 分类: LINUX 原文地址:Linux I2C驱动分析(三)----i2c_ ...
- Android4.4 Telephony流程分析——彩信(MMS)发送过程
本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉. 彩信收发依靠WAP网络,在Android4.4中的实现基于Http协议的应用.下图为几个彩信传 ...
- Android4.0 Surface机制分析
1. java层面的Surface 对于Surface我们的认识主要是android的类Surface, android的文档描述Surface是"Handle onto a raw ...
- Android4.4 GPS框架分析【转】
本文转载自:http://blog.csdn.net/junzhang1122/article/details/46674569 GPS HAL层代码在目录trunk/Android/hardware ...
- Android4.4 耳机检测分析
在ALSA架构中,ASOC是由3个部分组成:Platform.CODEC & Machine.而耳机检测一般是在Machine driver里实现,当然也可以在CODEC driver里实现. ...
- Android4.42-Settings源代码分析之蓝牙模块Bluetooth(上)
继上一篇Android系统源代码剖析(一)---Settings 接着来介绍一下设置中某个模块的源代码.本文依然是基于Android4.42源代码进行分析,分析一下蓝牙模块的实现.建议大致看一下关于S ...
- Android Debuggerd 简要介绍和源码分析(转载)
转载: http://dylangao.com/2014/05/16/android-debuggerd-%E7%AE%80%E8%A6%81%E4%BB%8B%E7%BB%8D%E5%92%8C%E ...
- DPI深度包检测
最近在读网络协议方面的论文,接触到DPI技术.博主是个小白,这里写些查到的笔记. 原文出处因为比较多,杂乱.百度文库和许多地方都有,就不贴链接了. 1. DPI 全称为"Deep Packe ...
随机推荐
- Cinema CodeForces - 670C (离散+排序)
Moscow is hosting a major international conference, which is attended by n scientists from different ...
- Gym 102091K The Stream of Corning 2【线段树】
<题目链接> 题目大意: 进行两种操作:1.给定一个数的出现时间.价值.消失时间: 2.进行一次询问,问你当前时间,第K大的数的价值. 解题分析: 采用离线集中处理,将每个数的出现时间和它 ...
- POJ1062昂贵的聘礼(经典) 枚举区间 +【Dijkstra】
<题目链接> 昂贵的聘礼 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用1000 ...
- AS安装过程中出现的错误
1.首先是You may need to adjust the proxy settings in Gradle.的错误, 主要是看你有没有图中红线所画的gradle的压缩包 如果没有,那就前往htt ...
- javascript的严格模式和正常模式
在js代码中加入"use strict";就相当于进入严格模式,严格模式改变了语法和运行时行为,将隐藏的问题转化为错误. js的严格模式有以下特点: 一.变量声明 全局变量必须显示 ...
- angular笔记_7
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- AE视频制作 参考 资源 科幻科技风格 开场 公司企业宣传
== 人类已经堕落,机器军团大举入侵,开始抹除人类,净化地球!-原创-高清正版视频在线观看–爱奇艺 这个视频片头不错.展示效果和音乐. == 外星人入侵地球,只为收集人类大脑!速看科幻电影<天际 ...
- word插入行
如何在Word中添加多行或多列 在弹出的列表中选择[插入],再选择[在下方插入行]即可. 选择多少行就可添加多少行. 按F4重复上一操作可快速添加. 添加列也同样如此,选中一个单元格,右键单击,在弹出 ...
- 英语口语练习系列-C31-图书-谈论事物-白雪歌送武判官归京
book your favorite book a story in your childhood a character in film or TV 词汇 含义 备注 trend 趋势 indivi ...
- React Native小白入门学习路径——四
上一周一直在弄着老师布置的各种任务,再加上要做的都还没做完.所以上周的总结到现在才写完发出来..真的觉得老师太高估我们这些菜鸡了. 也许是我太着急了,在自己还没有足够储备去完成自己的项目,总觉得先找一 ...