当我们开始编写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在这里被做成一个叫做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 简介 #### 一、RIL 的定义与作用 ...通过对RIL架构及其工作原理的深入了解,可以帮助开发者更好地理解Android系统的电话服务是如何工作的,进而为后续的应用开发和系统优化提供有力支持。
Android RIL 架构分析 ...Android RIL 架构分析论文详细介绍了 Android RIL 的架构和实现细节,包括 RIL 的总体架构、本地库的实现、RIL 初始化和 Request 过程。这些知识点对于理解 Android Telephony 系统非常重要。
**Android底层架构研究** 在深入探索Android底层架构之前,我们首先需要理解其核心构成与运作原理。Android系统作为全球最广泛使用的移动操作系统之一,其底层架构的复杂性和精妙性是确保其稳定性和高效性的基石。 ...
8.GDI机制:Android GDI之基本原理及其总体框架、Android GDI之显示缓冲管理、Android GDI之共享缓冲区机制、Android GDI之SurfaceFlinger。 通过本文档的知识点,读者可以更好地理解Android系统的架构设计和核心...
本章节将从总体框架出发,详细介绍 Android Phone 的各个组成部分。 #### 二、PhoneApp 模块 ##### 2.1 概述 **PhoneApp** 是应用层的核心组件,其主要职责在于管理 Phone 实例。通过 `PhoneApp.getInstance()` ...
**Android核心分析(18):** RIL-Java是电话系统中处理RIL请求的Java层实现,这部分内容详细介绍了其架构和工作流程。 **Android核心分析(19):** GSMCallTracker是电话系统中负责管理电话呼叫状态的关键组件。这...
这部分介绍了Android电话系统的总体架构和功能模块。电话系统是Android的重要组成部分之一,涉及到拨打电话、接听电话等功能。 #### 十七、电话系统之rilD 在这里,作者详细讲解了Radio Interface Layer (RIL) 的...
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 按键...
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软件栈的不同层次,从Linux内核、HAL(硬件抽象层)、系统运行时库、应用程序框架到各种应用程序。 - **软件组件:** 对核心软件组件如Activity、Service、Broadcast Receiver等...
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 按键...