打电话请求流程
1.进入键盘界面(TwelvekeyDialer),点击dialButton发送ACTION_CALL_PRIVILEGED动作来启动OutgoingCallBroadcaster.
2.OutgoingCallBroadcaster对紧急号码进行处理后发ACTION_NEW_OUTGOING_CALL广播,由内部类OutgoingCallReceiver接收,由该类来启动InCallScreen。
3.InCallScreen的onCreate中调用initInCallScreen初始化打电话界面,registerForPhoneStates注册电话状态监听,由内部Handler对象来处理监听(用于对底层的响应,在打电话响应流程中会使用),再调用internalResolveIntent,该方法中调用placeCall发送打电话请求。
4.placeCall中通过调用PhoneUtils的placeCall实现,PhoneUtils的placeCall再调用 GSMPhone的dial方法,该方法再调用GSMCallTracker.dial方法。而GSMCallTracker持有 CommandInterface对象,即RIL类的实例。RIL的dial方法对intent进一步处理,再调用自身的send方法发送 RILRequest对象,由内部类RILSender对象代理发送,该对象通过LocalSocket写入输出流中。套接字方法在 LocalSocketImpl中由native函数实现。
上述步骤即完成了从用户发送打电话请求到框架层向底层发送請求的流程,然后通过socket转到RIL层处理dial請求。
打电话响应流程
1.RIL中的内部类RILReceiver监听守护进程rild的上报,从套接字中读取上报信息,并依次调用readRilMessage,processResponse,processSolicited进行处理。
2.processSolicited方法向GSMCallTracker对象发送消息。GSMCallTracker对象的handlerMessage方法进行处理。接着调用updatePhoneState方法更新状态。
3.该方法调用GSMPhone.notifyPreciseCallStateChanged,进而调用RegistrantList对向的 intelNotifyRegistrants,该方法循环处理已经注册到RegistrantList中的事件,然后通过Registrants向注册的handler发送消息。
4.InCallScreen中注册的handler将会接收到消息,并来响应onPhoneStateChanged事件。该事件进而调用updateScreen来更新界面。
上述过程即完成了从RIL层到应用层的响应过程。
打电话的請求流程和响应流程基本涵盖了RIL层与应用层的消息传递流程。诸如来电流程及应答流程的通信方式基本相似。
分享到:
相关推荐
- **Framework Layer(框架层):** 提供 Android 系统的核心 API 和服务支持,包括 PhoneService。 - **RILJ Layer(RIL Java 层):** 作为 Java 层与原生层之间的桥梁,负责处理 RIL 请求。 - **RILD Daemon(RIL...
标题中的"Foundation Framework Reference"是指苹果iOS和macOS开发中的Foundation框架的官方参考文档,它是Apple的开发平台上的基础框架之一,提供了许多核心的面向对象编程功能和服务。"iphone Foundation框架参考...
**Framework** 层主要由两部分组成:**RIL** 模块和 **Phone** 模块。 - **RIL** 模块:负责底层通信协议的封装,与 RIL 原生代码交互。 - **Phone** 模块:提供面向应用程序开发者的电话功能接口。 ##### 3.2 RIL...
整个电话流程可以分为来电流程和去电流程两部分。来电流程是指当手机收到来电时,Telephony如何处理这个来电请求的过程。这个过程主要涉及到PhoneBase.java、CommandsInterface.java、BaseCommands.java、Ril.java等...
AppFramework的API包括核心函数、事件处理、动画效果、网络请求等多个方面。以下是一些关键API的介绍: 1. **$.ready()**:在DOM加载完成后执行的回调函数,类似于jQuery的$(document).ready()。 2. **$.ajax()**...
9. **与RESTful API的集成**:许多iOS应用需要与服务器进行数据交换,`json.framework`可能有专门的工具或示例来简化与RESTful API的交互,如自动处理HTTP请求和响应。 10. **异步处理**:为了不影响用户界面的流畅...
《Windows Phone 7高级编程》是一本专注于移动应用开发的专业教程,主要针对Windows Phone平台,旨在帮助开发者深入理解和掌握在Windows Phone 7操作系统上构建高效、高质量应用的技术和技巧。这本书详细介绍了如何...
- 数据接收:当请求完成时,使用`HttpWebResponse`对象获取响应数据。数据通常是流形式,需要读取并转换为字符串或其他格式。 2. **XML解析**: - `XmlDocument`类:它是.NET Framework中用于解析XML文档的主要...
《Foundation Framework:构建iOS应用程序的核心基石》 Foundation框架是苹果公司为iOS开发人员提供的一套核心框架库,它是构建iPhone、iPad以及更广泛iOS设备上应用程序的基础。此框架集成了大量的基础类,提供了...
1. **Popup类**:这是.NET Framework for Windows Phone提供的基础控件,可以用来创建浮于其他元素之上的窗口。开发者需要理解Popup的基本用法,如设置其位置、大小、背景透明度等属性。 2. **XAML布局**:自定义弹...
开发者需要注册获取API密钥,并理解API的请求结构、参数及响应格式,如JSON或XML。 4. **OAuth身份验证**:为了安全地访问Foursquare API,开发者需要实现OAuth身份验证过程,以获取用户的授权。这涉及向Foursquare...
《AppFramework与JqMobi实战:打造高效移动应用》 在移动应用开发领域,AppFramework和JqMobi是两个备受开发者喜爱的轻量级框架。它们为开发者提供了便捷的工具,使得创建功能丰富的、跨平台的移动应用变得更加简单...
6. 网络编程:介绍WP7的WebClient和HttpClient类,以及如何处理网络请求和响应。 7. 多媒体支持:讨论WP7对音频、视频和图像的支持,以及如何在应用中集成多媒体元素。 8. 通知服务:比较iOS的本地通知和远程推送...
本章节重点介绍了Windows Phone 8.1中如何使用`HttpWebRequest`进行网络编程的基本步骤,包括客户端发起GET请求、服务器端处理请求以及编码格式的问题解决。通过实际操作和案例分析,可以帮助初学者快速掌握这一重要...
4. **C#与.NET Framework**:大部分Windows Phone应用使用C#编程语言,开发者需要熟悉.NET Framework,包括类库、异常处理和多线程。 5. **Visual Studio集成开发环境**:使用Visual Studio进行Windows Phone应用...
在.NET Framework for Windows Phone中,`System.Device.Location`命名空间提供了获取位置信息的相关类。其中,`GeoCoordinateWatcher`是核心类,用于监听和获取位置更新。我们可以通过创建一个`...
- **.NET Framework**:支持.NET Compact Framework 3.5 SP1和Silverlight for Windows Phone。 #### 二、应用程序基础 **知识点3:用户界面设计** - **XAML**:使用XAML(Extensible Application Markup Language...
4).NET SDK 需要依赖 .NET Framework 2.0及以上 (不支持Windows Phone平台); 5).NET Core 需要依赖 .NET Core 2.0及以上; 6)NodeJS SDK 需要依赖js 0.8及以上; 7)C语言 SDK 无版本限制。 三、如何...
3. **API使用**:开发者需要学习和理解Cronet提供的API,以便创建请求、处理响应和管理网络连接。 4. **性能优化**:Cronet提供了许多性能优化选项,例如缓存策略、连接超时和重试机制,可以根据具体需求进行调整。 ...
面向iPhone开发者的WP7开发指南,是一份专为已有iPhone开发经验的开发者设计的资源,旨在帮助他们快速理解和适应Windows Phone 7(简称WP7)平台的开发环境。本指南将详细阐述iOS与WP7之间的差异,以及如何利用已有...