Android RIL的Java部分也被分为了两个模块,RIL模块与Phone模块。其中RIL模块负责进行请求以及相应的处理,它将直接与RIL的原声代码进行通信。而Phone模块则向应用程序开发者提供了一系列的电话功能接口。
1.RIL模块结构
在RIL.java中实现了几个类来进行与下层rild的通信。
它实现了如下几个类来完成操作:
RILRequest:代表一个命令请求
RIL.RILSender:负责AT指令的发送
RIL.RILReceiver:用于处理主动和普通上报信息
RIL.RILSender与RIL.RILReceiver是两个线程。
RILRequest提供了obtain()方法,用于得到具体的request操作,这些操作被定义在RILConstants.java中(RILConstants.java中定义的request命令与RIL原生代码中ril.h中定义的request命令是相同的),然后通过 send()函数发送EVENT_SEND,在RIL_Sender线程中处理这个EVENT_SEND将命令写入到stream(socket)中去。 Socket是来自常量SOCKET_NAME_RIL,它与RIL 原生代码部分的s_fdListen所指的socket是同一个。
当有上报信息来到时,系统将通过RILReciver来得到信息,并进行处理。在RILReciver的生命周期里,它一直监视着 SOCKET_NAME_RIL这个socket,当有数据到来时,它将通过readRilMessage()方法读取到一个完整的响应,然后通过 processResponse来进行处理。
2.Phone模块结构
Android通过暴露Phone模块来供上层应用程序用户使用电话功能相关的接口。它为用户提供了诸如电话呼叫,短信息,SIM卡管理之类的接口调用。它的核心部分是类GSMPhone,这个是Gsm的电话实现,需要通过PhoneFactory获取这个GSMPhone。
GSMPhone并不是直接提供接口给上层用户使用,而是通过另外一个管理类TelephonyManager来供应用程序用户使用。
类TelephonyManager实现了android的电话相关操作。它主要使用两个服务来访问telephony功能:
1.ITelephony,提供给上层应用程序用户与telephony进行操作,交互的接口,在packages/apps/Phone中由PhoneInterfaceManager.java实现。
2.ItelephonyRegistry提供了一个通知机制,将底层来的上报通知给框架中需要得到通知的部分,由TelephonyRegistry.java实现。
GSMPhone通过PhoneNotifier的实现者DefaultPhoneNotifier将具体的事件转化为函数调用,通知到 TelephonyRegistry。TelephonyRegistry再通过两种方式通知给用户,其一是广播事件,另外一种是通过服务用户在 TelephonyRegistry中注册的IphoneStateListener接口,实现回调(回调方式参见android的aidl机制)。
分享到:
相关推荐
- **RIL Java框架**: 包括RIL模块与Phone模块。RIL模块用于与rild通信,而Phone模块则提供电话功能的API给上层应用。 **2. 目录结构** - **/hardware/ril/**: 主要包含RIL相关的源码。 - **rild**: RIL守护进程...
本文档对Android RIL部分的内容进行了介绍,其重点放在了Android RIL的原生代码部分。包括四个主题: 1.Android RIL框架介绍 2.Android RIL与WindowsMobile RIL 3.Android RIL porting 4.Android RIL的java框架
本文档深入剖析了Android RIL的原生代码部分,并涵盖了四个主题:Android RIL框架介绍、Android RIL与Windows Mobile RIL的比较、Android RIL的移植过程以及Android RIL的Java框架。 1. Android RIL框架介绍 ...
Android RIL的Java框架 RIL的Java框架主要由RIL模块和Phone模块构成。RIL模块负责与rild通信,处理请求和响应消息;Phone模块则封装了电话服务的API,允许应用程序调用电话功能,如拨打电话、发送短信等。 #### ...
RIL的Java框架部分由RIL模块和Phone模块构成。RIL模块处理与rild的通信,而Phone模块则向应用开发者暴露电话功能接口,例如拨打电话、发送短信等。Phone模块的核心是GSMPhone类,它通过PhoneFactory获取,并由...
RIL 的实现主要包括四个方面:RIL 框架介绍、RIL 与 Windows MobileRIL 的比较、RIL 的 porting 以及 RIL 的 Java 框架。其中,RIL 框架介绍部分详细介绍了 RIL 的框架结构和工作原理;RIL 与 Windows MobileRIL 的...
RIL的java框架分为RIL模块和Phone模块,RIL模块与RILD通信,Phone模块向应用程序提供电话功能接口。 1.2 Android RIL目录结构 - include:包含RIL的头文件,如ril.h。 - rild:RIL守护进程的源代码,包括main函数...
其中,RIL的Java框架部分也分为两部分: - **RIL模块**:负责与下层的RILD进行通信。 - **Phone模块**:直接暴露电话功能接口给应用开发者,以便于他们开发电话相关的应用。 #### 二、Android RIL 的目录结构 ...
RILJ 是 Java 语言编写的,位于 Android 框架层中,负责处理上层应用程序的请求;RILC 是 C/C++ 语言编写的,位于 HAL 层中,负责与 MODEM 进行通信。 RILJ 和 RILC 之间通过 Socket 进行通信,RILJ 将上层应用程序...
5. **适配HAL(硬件抽象层)**:在 frameworks/base/services/core/java/com/android/internal/telephony/ 目录下,修改RIL相关的HAL接口,以匹配新的RIL实现。HAL是Android系统与硬件平台之间的一层抽象,确保上层...
本文深入剖析了Android RIL结构及其Java框架中的RIL与Phone模块,揭示了这两个模块如何协作,共同构建起Android强大的电话通信能力。通过对RILRequest、RILSender、RILReceiver等关键组件的介绍,以及对Phone模块中...
#### 四、Android RIL的Java框架 - **组成**: - **RIL模块**: 主要用于与rild进行通信。 - **Phone模块**: 直接暴露功能接口给应用开发者使用。 - **功能**: - 提供了高级的API,使得应用开发者可以轻松调用RIL的...
在RIL架构中,RILJ是位于框架层,主要负责处理Java层的请求,与RILD(Radio Interface Layer Daemon)进行通信。RILD是运行在Linux内核空间的一个进程,作为与硬件驱动的接口,处理来自RILJ的请求,并与VendorRIL...
RIL是Android Telephony框架的关键部分,它作为操作系统和硬件无线电之间的桥梁。RIL通过一系列的AT命令与基带处理器通信,实现语音、数据、短消息等服务。RILD(RIL Daemon)是RIL的守护进程,通常由手机制造商...
- RIL 的 Java 框架包括 RIL 模块(与 `rild` 通信)和 Phone 模块(向应用程序提供电话功能接口)。 2. **Android RIL 目录结构** - `Android/hardware/ril` 文件夹包含 `rild`, `libril`, 和 `reference-ril` ...
### Android Phone 框架详解(以 GsmPhone 为例) #### 一、概述 本文旨在深入探讨 Android Phone 框架的核心组成部分及其工作原理,特别聚焦于 GsmPhone 的实现细节。Android Phone 框架是 Android 系统中负责...
Android操作系统中,软件流程的构建涉及多个层次,包括应用程序层(App)、框架层(Framework)以及无线接口层(Ril)。理解这些层次之间的交互对于深入掌握Android系统至关重要。本文将深入探讨Android App层、...
本文将深入剖析Android平台上基于RIL的呼叫流程框架,特别是Java层面的呼叫功能实现。 #### 二、RIL简介及其在Android中的角色 RIL在Android系统中的主要职责是为上层应用提供数据传输、AT命令发送及响应处理等...
### Android Phone 框架详解 #### 一、总体框架概述 Android Phone 模块作为整个 Android 系统中至关重要的组成部分,主要负责处理电话相关的功能和服务,包括但不限于接听、拨打电话、短信处理等。本章节将从总体...