`
kobe学java
  • 浏览: 258338 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android 1.5: 飞行模式分析

 
阅读更多
Android 1.5: 飞行模式分析
作者:徐建祥(netpirate@gmail.com)
日期:2009/11/05
网址:http://www.anymobile.org



1.1 通过com.android.settings.WirelessSettings打开飞行模式;

1.1.1 设置飞行模式值;
Settings.System.putInt(mContext.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, enabling ? 1 : 0);

1.1.2 发出Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED)。
AirplaneModeEnabler.setAirplaneModeOn(boolean enabling)

1.2 关闭相关的服务连接

1.2.1 关闭WIFI;
frameworks/base/services/java/com/android/server/WifiService.BroadcastReceiver.onReceive(...)

1.2.2 关闭Bluetooth;
frameworks/base/core/java/android/server/BluetoothDeviceService.BroadcastReceiver.onReceive(...)

1.2.3 关闭RADIO。
PhoneApp.PhoneAppBroadcastReceiver.onReceive(...) -> GSMPhone.setRadioPower(false)->ServiceStateTracker.setRadioPower(false)->ServiceStateTracker.setPowerStateToDesired()->RIL.setRadioPower(true, null)

2/ 取消飞行模式

与打开飞行模式流程类似,false改为true,略。

3/ 飞行模式启动流程

在SIM_READY后,ServiceStateTracker收到RADIO_STATE_CHANGED通知后,关闭RADIO;WIFI和蓝牙部分,则会在对应的服务程序中判断飞行模式设置,如果是飞行模式,则不可用。

下面是RADIO OFF流程:

3.1 正常开机,在RADIO STATE切换到SIM_READY状态后,向上发出EVENT_RADIO_STATE_CHANGED通知;
RADIO.STATE = RADIO_STATE_UNAVAILABLE->RADIO_STATE_OFF->SIM_NOT_READY->SIM_READY
(hardware/ril/reference-ril/reference-ril.c)

3.2 ServiceStateTracker.java初始化,设置mDesiredPowerState = ! (airplaneMode > 0),并调用RIL接口注册EVENT_RADIO_STATE_CHANGED;
frameworks/base/telephony/java/com/android/internal/telephony/gsm/ServiceStateTracker.java

3.3 ServiceStateTracker.java处理RADIO STATE的变化,如果不是飞行模式,设置RADIO状态为ON;如果是飞行模式,且开机状态,则关掉RADIO;
1     public void handleMessage (Message msg)
2             case EVENT_RADIO_STATE_CHANGED:
3                 // This will do nothing in the radio not
4                 // available case
5                 setPowerStateToDesired();
6                 pollState();
7                 break;
8     private void setPowerStateToDesired()
9         if (mDesiredPowerState
10             && cm.getRadioState() == CommandsInterface.RadioState.RADIO_OFF
11         ) {
12             cm.setRadioPower(true, null);
13         } else if (!mDesiredPowerState && cm.getRadioState().isOn()) {
14             dcTracker.cleanConnectionBeforeRadioOff();
15             // If it's on and available and we want it off..
16             cm.setRadioPower(false, null);
17         } // Otherwise, we're in the desired state
18     }
分享到:
评论

相关推荐

    android1.5 API

    Android 1.5 API,全称为Cupcake,是Android操作系统的一个早期版本,发布于2009年,标志着Android平台的重要发展。这个版本引入了许多关键功能和改进,为后来的版本奠定了基础。将下载的Android 1.5 API解压缩后放...

    android 源码 1.5 版本

    Android源码1.5版本是Android操作系统早期的一个重要里程碑,对于深入理解Android系统的工作原理、进行定制开发或者优化性能有着重要的参考价值。这个版本的源码涵盖了从内核到应用程序框架的各个方面,提供了开发者...

    android 1.5 gi rom

    【Android 1.5 Cupcake ROM】 Android 1.5,代号"Cupcake",是Google发布的Android操作系统的早期重要版本。这个版本在2009年发布,为Android平台带来了许多重要的改进和功能升级,标志着Android系统从一个基本的...

    Android1.5_ApiDemo

    《Android 1.5 ApiDemo深度解析》 在Android的发展历程中,1.5版本(Cupcake)是一个重要的里程碑,它为开发者提供了丰富的API,极大地拓展了Android应用的开发可能性。本文将深入探讨Android 1.5 ApiDemo,帮助...

    Android1.5 NDK Release 1中文文档

    总结来说,Android 1.5 NDK Release 1是Android平台早期支持本地代码开发的重要里程碑,它开启了Android应用的多元化编程模式,为开发者提供了更广阔的技术空间,同时也带来了性能提升和新的挑战。这篇中文文档对...

    Android 1.5 SDK离线包

    低版本 Android1.5 SDK 离线包,低到没朋友,适合考古的朋友。其他版本可能更新了。主要解决无法下载Android SDK的痛点。sdk路径选这个文件。 简单教程。 这是Android开发所需的sdk,下载并解压后,将解压出的整个...

    android1.5Camera相关code

    在"android1.5Camera相关code"这个压缩包中,我们可以推测它包含了一些适用于Android 1.5版本的相机功能实现代码。Android 1.5(Cupcake)是Android系统的一个早期版本,尽管现在已经较为过时,但理解其Camera API...

    android-studio sdk 模拟 Android 1.5 到 2.3.1 的任一版本.part11.rar

    android-studio sdk 模拟 Android 1.5 到 2.3.1 的任一版本.part11.rar

    android-studio sdk 模拟 Android 1.5 到 2.3.1 的任一版本.part08.rar

    android-studio sdk 模拟 Android 1.5 到 2.3.1 的任一版本.part08.rar

    Android 1.5 sdk

    Android 1.5 SDK是Android操作系统的一个早期版本,它的API级别为3,发布于2009年。这个SDK包含了开发针对Android 1.5 Cupcake版本应用所需的所有工具、库和文档。以下是对Android 1.5 SDK的详细解释: 1. **...

    安卓Android源码——飞行历飞行模式AirPlus.zip

    "安卓Android源码——飞行历飞行模式AirPlus.zip"这个压缩包文件很可能是关于安卓系统中实现飞行模式的具体源代码,尤其是与AirPlus相关的部分。AirPlus可能是一个特定的模块或者功能,用于优化或扩展飞行模式的特性...

    android4.2以上系统飞行模式开启、关闭以及监听

    在Android系统中,飞行模式(Airplane Mode)是一种特殊的设备设置,它允许用户快速禁用所有无线通信功能,包括蜂窝数据、Wi-Fi、蓝牙和GPS等,以便在飞机上或要求关闭无线设备的地方使用。从Android 4.2版本开始,...

    Android1.5 源码

    Android 1.5 是 Android 系统的一个早期版本,它为开发者提供了初步的智能手机平台功能。这个源码包包含了 Android 1.5 开发的核心组件和库,是深入理解 Android 系统工作原理的重要资源。以下将从各个部分详细介绍...

    安卓Android源码——飞行历 飞行模式 AirPlus.zip

    "安卓Android源码——飞行历 飞行模式 AirPlus.zip"这个压缩包文件很可能是关于安卓系统中实现飞行模式功能的相关源代码,可能包含了AirPlus项目,这是一个可能的自定义飞行模式的实现或者增强。 在深入探讨之前,...

    android1.5源码及关联方法

    "android1.5源码及关联方法" 提供了对早期Android版本——Cupcake(1.5)的源代码分析,这对于开发者尤其是那些希望追溯Android发展历史、理解其演进过程的人来说极其有价值。 首先,Android源码的分析可以帮助我们...

    Android 1.5 连连看

    对于想要学习Android开发的人来说,分析和研究这款“Android 1.5 连连看”游戏的源代码,可以帮助他们理解和掌握早期Android应用的基本架构,以及如何利用有限的系统资源构建一个完整的游戏。 综上所述,"Android ...

    Android 1.5源码,包含SDK中没有的类库part2

    Android1.5_part1.jar和Android1.5_part2.jar两个文件很可能是对Android 1.5源码的拆分,它们可能包含了一些非标准库或者特定于1.5版本的扩展功能。开发者可以通过反编译和分析这两个JAR文件,获取更多的自定义功能...

    android 1.5 source 源码

    android 1.5 source 源码,用7zip解压。 解压为 android-sdk-windows\platforms\android-3\sources\ 可解决 eclipse 调试时 android 项目时报“Source not found”问题。也方便查看 android 源代码。

    android1.5基础学习代码

    android1.5基础学习代码 光盘内容

Global site tag (gtag.js) - Google Analytics