- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Call接打流程分析
Unicair.cn CALL接打流程分析 Unicair Communication Tec Co., Ltd. 烟台友开通信技术有限公司 目录 1.Android电话系统之RIL分析 2.Android Phone接听处理流程 3.Android Phone去电处理流程 Android电话系统之RIL分析 智能机在硬件上多采用双cpu的架构,一个是基带处理器(BP),一个是应用处理器(AP),BP主要处理数字信号、语音信号的编码解码以及GSM通信协议,手机射频通讯控制等功能。AP主要是运行操作系统和各种应用程序,应用处理器通过AT命令集与带GPRS功能的无线通讯模块通信。 RIL(Radio Interface Layer)位于应用程序框架与内核之间,负责数据的可靠传输、AT命令的发送以及response的解析。RIL支持SMS、Voice Call,上网等功能。 Android设计电话系统时,建立了一个虚拟电话系统, RIL则是将虚拟电话系统的标准功能转换成实际的所使用的Modem的AT指令。 RIL rild RIL-Java 采用Socket通讯方式,在ril.cpp中创建Socket对象 RIL模块 Phone模块 主要用于与下层的rild进行通信 为上层应用提供电话功能接口,实现电话功能 Android电话系统之RIL分析 Android电话系统的框架构成图 SOCKET 串口 Rild Event loop Read loop RILReceiver RILSender Ril 异步处理机制 Command Interface Phone Service GSMPhone/CDMAPhone CallNotifier CallManager DataConnectionTracker CallTracker Connection DefaultPhoneNotifier … Android电话系统之RIL分析 1. RIL.java Command Interface 大多数Modem都是根据通讯协议提供接口,这些接口都是电话的基本功能的描述是对Modem AT指令的提炼抽象。 … dial setMute conference acceptCall rejectCall sendDTMF getCurrrentCalls setupDataCall getPreferredVoicePrivacy hangupWaitingOrBackground … Android中利用Result Message 和RILRequest对象来完成Request和Result的对应关系。 以acceptcall为例看一下接口代码的实现: acquireWakeLock()函数实际是发送了一个 EVENT_WAKE_LOCK_TIMEOUT消息 调用send函数后将请求消息发送到Sender的架构 Android电话系统之RIL分析 2. RIL.java RILSender class RILSender extends Handler implements Runnable RILSender Send(rr) handleMessage EVENT_SEND mRequestsList.add(rr) RILRequest类用到的 实例变量: LocalSocket s; s = mSocket; byte[] data; data = rr.mp.marshall(); rr.mp.recycle(); rr.mp = null; s.getOutputStream().write(dataLength); s.getOutputStream().write(data); Android电话系统之RIL分析 3. RIL.java RILReceiver Receiver通过Socket接收读取从RILD传递过来的Response Parcel。Response分为两种类型,一种是URC,一种是命令应答。对于URC将会直接分发到通知注册表中的Handler。而命令应答则通过Receiver的异步通知机制传递到命令的发送者进行相应处理。 Android Phone接听处理流程 来电处理流程(以CDMAPhone为例): 1.?创建CdmaPhone时,在其构造方法中调用init函数: 2.?创建CdmaCallTracker时:?? ????cm.registerForCallStateChanged(this,?EVENT_CALL_STATE_CHANGE,?null);
文档评论(0)