欢迎来到天天文库
浏览记录
ID:6164187
大小:583.50 KB
页数:19页
时间:2017-11-14
《call接打流程分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Unicair.cnCALL接打流程分析UnicairCommunicationTecCo.,Ltd.烟台友开通信技术有限公司目录1.Android电话系统之RIL分析2.AndroidPhone接听处理流程3.AndroidPhone去电处理流程Android电话系统之RIL分析智能机在硬件上多采用双cpu的架构,一个是基带处理器(BP),一个是应用处理器(AP),BP主要处理数字信号、语音信号的编码解码以及GSM通信协议,手机射频通讯控制等功能。AP主要是运行操作系统和各种应用程序,应用处理器通过AT命令集与
2、带GPRS功能的无线通讯模块通信。RIL(RadioInterfaceLayer)位于应用程序框架与内核之间,负责数据的可靠传输、AT命令的发送以及response的解析。RIL支持SMS、VoiceCall,上网等功能。Android设计电话系统时,建立了一个虚拟电话系统,RIL则是将虚拟电话系统的标准功能转换成实际的所使用的Modem的AT指令。RILrildRIL-Java采用Socket通讯方式,在ril.cpp中创建Socket对象RIL模块Phone模块主要用于与下层的rild进行通信为上层应用提供电
3、话功能接口,实现电话功能Android电话系统之RIL分析Android电话系统的框架构成图SOCKET串口RildEventloopReadloopRILReceiverRILSenderRil异步处理机制CommandInterfacePhoneServiceGSMPhone/CDMAPhoneCallNotifierCallManagerDataConnectionTrackerCallTrackerConnectionDefaultPhoneNotifier…Android电话系统之RIL分析1.RIL.
4、javaCommandInterface大多数Modem都是根据通讯协议提供接口,这些接口都是电话的基本功能的描述是对ModemAT指令的提炼抽象。…dialsetMuteconferenceacceptCallrejectCallsendDTMFgetCurrrentCallssetupDataCallgetPreferredVoicePrivacyhangupWaitingOrBackground…Android中利用ResultMessage和RILRequest对象来完成Request和Result的对应
5、关系。以acceptcall为例看一下接口代码的实现:acquireWakeLock()函数实际是发送了一个EVENT_WAKE_LOCK_TIMEOUT消息调用send函数后将请求消息发送到Sender的架构Android电话系统之RIL分析2.RIL.javaRILSenderclassRILSenderextendsHandlerimplementsRunnableRILSenderSend(rr)handleMessageEVENT_SENDmRequestsList.add(rr)RILRequest类
6、用到的实例变量:LocalSockets;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.javaRILReceiverReceiver通过Socket接收读取从RILD传递过来的ResponseParcel。Response分为两种类型,
7、一种是URC,一种是命令应答。对于URC将会直接分发到通知注册表中的Handler。而命令应答则通过Receiver的异步通知机制传递到命令的发送者进行相应处理。AndroidPhone接听处理流程来电处理流程(以CDMAPhone为例):1.创建CdmaPhone时,在其构造方法中调用init函数:2.创建CdmaCallTracker时:cm.registerForCallStateChanged(this, EVENT_CALL_STATE_CHANGE, null);最终调用mCallStateRegis
8、trants.add(r);将事件加入RegistrantList列表中去。这样,当底层收到相应的消息后,就能通过注册机制,经过处理,传到相应的Handler里面进行处理。下面通过实际的模拟来电,看一下消息的传递处理流程。AndroidPhone接听处理流程来电处理流程(以CDMAPhone为例):打开eclipse在DDMS模式下向模拟器拨号,在RIL.java的RIL
此文档下载收益归作者所有