`
quanminchaoren
  • 浏览: 926219 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android RIL 总体架构介绍

阅读更多

当我们开始编写Android的电话应用程序的时候,如果需要进行电话拨号,可以进行如下调用:
ITelephony tpCallModule = (ITelephony)ITelephony.Stub.asInterface(ServiceManager.getService("phon"));
tpCallModule.dial("13800138000");

而对于短信的应用,我们需要调用的则是SmsManager:
SmsManager SMS = SmsManager.getDefault();
SMS.sendTextMessage("13420926323",null,"this is a test sms",null,null);

到底Android是如何跟底层GSM模块通讯的呢?我一开始就猜测是不是跟WM那样采用RIL的架构来实现,查看了google的官方文档,证实 了我的猜测是正确的,Android里面的确采用了RIL架构跟底层GSM模块通讯,先看看RIL在Android里的位置吧。

Android RIL 总体架构介绍 - 东东 - 东东的博客

Android的RIL在这里被做成一个叫做rild的库,通过一个系统环境变量ro.radio.noril是否为空来决定要不要把RIL的代码 编译进内核,这点跟CE的编译方式是一样的,如果设置了该变量,将会有个"SimulateCommand"的玩意编译进内核,它可以在没有实际GSM硬 件的情况下模拟部分实际硬件的指令,然后让RIL驱动提供给上层应用,如果没有设置该系统环境变量就会采用RIL。

通过研究RIL的代码可以看到,Android的rild库是介于HAL接口与baseband modem之间,它同样提供了语音、数据、短信、SIM卡管理以及STK应用的功能,实现思路跟微软的RIL有异曲同工之妙,也是把标准的 GSM27.007中常用的如dial这些做主动请求的操作称之为request,一共75个;另外一类GSM模块主动上报的例如信号强度、基站信息等, 称之为unsolicited response,一共17个;开发模式也是跟微软RIL开发差不多,需要针对不同的GSM模块进行不同的GSM驱动开发,公用的部分google给你做 好了,特定的部分需要你自己去定制,这样做可以大大地提高开发效率。
RIL跟上层通讯主要采用两种方式,一种是通过Socket发送与接收消息的方式来实现,这个Socket在ril.cpp里面可以找到它的创建代码:
s_fdListen = android_get_control_socket(SOCKET_NAME_RIL);
还 有另外一种方式就是直接通过TCP/IP直接访问内核中的shared memory,进行RPC调用,这种方式主要应用在数据模式上,一来由于Android的每个Activity随时都会有可能需要网络连接接收发送数据, 因此必须提供一种实时性较高访问的方式,二来可以提高通讯效率。

分享到:
评论

相关推荐

    android ril总体架构介绍

    android ril总体架构介绍

    Android RIL 简介(包括流程图)

    ### Android RIL 简介 #### 一、RIL 的定义与作用 ...通过对RIL架构及其工作原理的深入了解,可以帮助开发者更好地理解Android系统的电话服务是如何工作的,进而为后续的应用开发和系统优化提供有力支持。

    AndroidRIL架构分析[文].pdf

    Android RIL 架构分析 ...Android RIL 架构分析论文详细介绍了 Android RIL 的架构和实现细节,包括 RIL 的总体架构、本地库的实现、RIL 初始化和 Request 过程。这些知识点对于理解 Android Telephony 系统非常重要。

    Android底层架构研究

    **Android底层架构研究** 在深入探索Android底层架构之前,我们首先需要理解其核心构成与运作原理。Android系统作为全球最广泛使用的移动操作系统之一,其底层架构的复杂性和精妙性是确保其稳定性和高效性的基石。 ...

    Android核心分析-050417421

    8.GDI机制:Android GDI之基本原理及其总体框架、Android GDI之显示缓冲管理、Android GDI之共享缓冲区机制、Android GDI之SurfaceFlinger。 通过本文档的知识点,读者可以更好地理解Android系统的架构设计和核心...

    Android phone 框架介绍

    本章节将从总体框架出发,详细介绍 Android Phone 的各个组成部分。 #### 二、PhoneApp 模块 ##### 2.1 概述 **PhoneApp** 是应用层的核心组件,其主要职责在于管理 Phone 实例。通过 `PhoneApp.getInstance()` ...

    android核心分析pdf

    **Android核心分析(18):** RIL-Java是电话系统中处理RIL请求的Java层实现,这部分内容详细介绍了其架构和工作流程。 **Android核心分析(19):** GSMCallTracker是电话系统中负责管理电话呼叫状态的关键组件。这...

    Android核心分析系列教程

    这部分介绍了Android电话系统的总体架构和功能模块。电话系统是Android的重要组成部分之一,涉及到拨打电话、接听电话等功能。 #### 十七、电话系统之rilD 在这里,作者详细讲解了Radio Interface Layer (RIL) 的...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part1

    9.1.1 Android输入系统结构元素介绍239 9.1.2 移植Android输入系统时的工作240 9.2 input(输入)驱动241 9.3 模拟器的输入驱动256 9.4 msm高通处理器中的输入驱动实现257 9.4.1 触摸屏驱动257 9.4.2 按键...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part3

    9.1.1 Android输入系统结构元素介绍239 9.1.2 移植Android输入系统时的工作240 9.2 input(输入)驱动241 9.3 模拟器的输入驱动256 9.4 msm高通处理器中的输入驱动实现257 9.4.1 触摸屏驱动257 9.4.2 按键...

    Android核心分析(pdf)

    - **软件层次结构:** 介绍Android软件栈的不同层次,从Linux内核、HAL(硬件抽象层)、系统运行时库、应用程序框架到各种应用程序。 - **软件组件:** 对核心软件组件如Activity、Service、Broadcast Receiver等...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part2

    9.1.1 Android输入系统结构元素介绍239 9.1.2 移植Android输入系统时的工作240 9.2 input(输入)驱动241 9.3 模拟器的输入驱动256 9.4 msm高通处理器中的输入驱动实现257 9.4.1 触摸屏驱动257 9.4.2 按键...

Global site tag (gtag.js) - Google Analytics