Telephony理解
今天看了看framework里面的telephony相关的代码。。。做个小笔记吧.
路径位于
frameworks/base/telephony/
首先是Ril相关的。上层的所有对电话的操作和状态 获取等都是通过Ril来实现的,Ril通过发送命令与底层rild进行交互。
CommandsInterface是一个接口,他 定义了操作相关的命令、方法和监听等。。。
BaseCommands则直接继承了CommandsInterface接口。。
Ril继承自BaseCommands,并且负责通过socket与rild通信。。。它将对电话的操作(如:hangupConnection())转换成为了对应的
RIL_REQUEST_XXX发送到rild
RILReceiver则实现了Runnable接口。即启动一个循环一直监听socket,看底层是否发送相关的信息。收到respone进行相关处理后执行processResponse()方法
该方法内通过判断type分别执行processUnsolicited (p)和processSolicited (p)方法,这也就能获取电话状态等消息。
这里将会根据不同的response而通知相应的已经注册了监听的对象(通过RegistrantList的notifyRegistrants通知,之前已经通过phonebase的RegisterFor***changed方法注册).
注册的时候将会把Handle和Messae.what等注册进一个RegistrantList实例(加入一个arrayList),Ril收到response之后也是通过RegistrantList来将相应的信息返回给已经注册
的实例对象。
CallTracker就注册了相应的监听。所以当有对应的Response的时候,就会返回给CallTracker,然后CallTracker进行相应的处理,比如updatePhoneStae等。。。
在updatePhoneStae方法里又会调用对应的phone.notifyPhoneStateChanged(根据电话类型分为GSMPhone和CDMAPhone).在此方法内Phone对象又会调用PhoneNotifier.notifyPhoneState
方法。
PhoneNotifier是一个接口定义了电话状态改变,信号改变的通知等方法。具体的实现是在DefaultPhoneNotifier里面.这里就会将具体的电话事件转换为函数调用,通知TelephonyRegistry
TelephonyRegistry就会将电话事件给通知出去,这里分两种类型通知。1是通过广播发送,2是通过之前注册的Listener回调回去。
至此,电话事件就对第三方应用可见了。第三方应用就可以通过接受广播或者TelephonyManager.listen()方法监听到电话时间而进行相应的处理。
转载于:https://www.cnblogs.com/chenxian/archive/2011/03/03/1970063.html
Telephony理解相关推荐
- 《深入理解Android:Telephony原理剖析与最佳实践》一1.3 Android Telephony框架结构...
1.3 Android Telephony框架结构 前面对Android手机操作系统整体框架结构及每一层进行了简单的分析和说明,相信大家对Android智能手机操作系统有了一些基本的了解和认识.结合前 ...
- 【深入理解 android telephony 系列第一集 初识telephony】
深入理解 android telephony 深入理解 android telephony 系列第一集 初识telephony 1. 概述 2. Android Telephony 框架 3. And ...
- 《深入理解Android:Telephony原理剖析与最佳实践》一1.1 智能手机的系统结构
1.1 智能手机的系统结构 Android手机的基本硬件结构是符合智能手机的基本硬件结构,我们要学习Android移动开发,首先需要了解智能手机的硬件系统基本结构. 随着通信领域的快速发展,移动终端发 ...
- [深入理解Android卷一全文-第九章]深入理解Vold和Rild
为什么80%的码农都做不了架构师?>>> 由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该因为纸质媒介的 ...
- Android Telephony分析(三) ---- RILJ详解
前言 本文主要讲解RILJ工作原理,以便更好地分析代码,分析业务的流程. 这里说的RILJ指的是RIL.java (frameworks\opt\telephony\src\java\com\And ...
- 网络工程师英语系列2(CISCO IP Telephony)
CISCO IP Telephony The H.263 codec is more demanding of PC system resources, but it requires less ba ...
- Android Telephony通话状态更新消息上报流程
Telephony通话消息上报流程 通话相关代码名称统一约定以及运行进程: 通话相关代码名称统一约定及运行进程汇总 路径 统称 进程 packages/app/Dialer Dialer com.an ...
- Telephony之TelephonyRegistry(原)
一.TelephonyRegistry概述 TelephonyRegistry的作用是检测当前Radio的状态,包括通话.短信.数据连接等状态,当这些状态发生改变时,通知所有向他注册过的客户端.也就是 ...
- Android Telephony框架结构简析
Android Telephony涉及的框架结构如图1所示. 图1 Android Telephony框架结构 通过图1可以发现Android Telephony框架结构的一些规律,具体如下. An ...
最新文章
- ubuntu16.04版本 the system is running in low-graphics mode
- shell常见的文件属性检查
- 二开微信表情包小程序去授权版+网站后端
- ib课程计算机科学教材,热门课程:IB计算机科学的评估方式
- 今天来谈一谈环境对我们的习惯有什么影响
- Nginx双机热备实现方案(双主热备模式)
- ELK+filebeat+redis 日志分析平台
- Teleport Ultra网站静态资源下载工具
- 基于UDP广播的局域网匿名聊天APP
- linux共用home分区,安装UOS和Deepin双系统并且共用/home分区的测试报告
- 获取支付宝小程序链接
- 一种插槽式的组件化框架中间件——SCC
- js中对象属性、面向对象、面向过程、类、继承、以及原型原型链
- arduino传感器大全
- 【CSGO】Akuma正式解散 !各奔东西 被NAVI撞碎了?
- 数字用计算机写大写,微信小程序学习用:大写计算器;数字转换为大写
- 【企业数字化转型】数字化转型的本质(学习笔记)
- 80老翁谈人生(151):老翁老眼昏花,读错了一个数量级
- Aurora8B10B IP使用 -04- IP例程应用实例
- SQL生僻字模糊查询