Android 1.5: 飞行模式分析
来源:互联网 发布:网络直播录制 编辑:程序博客网 时间:2024/04/30 02:04
Android 1.5: 飞行模式分析
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;
123456789101112131415161718
public void handleMessage (Message msg) case EVENT_RADIO_STATE_CHANGED: // This will do nothing in the radio not // available case setPowerStateToDesired(); pollState(); break ; private void setPowerStateToDesired() if (mDesiredPowerState && cm.getRadioState() == CommandsInterface.RadioState.RADIO_OFF ) { cm.setRadioPower( true , null ); } else if ( ! mDesiredPowerState && cm.getRadioState().isOn()) { dcTracker.cleanConnectionBeforeRadioOff(); // If it's on and available and we want it off.. cm.setRadioPower( false , null ); } // Otherwise, we're in the desired state }
3.4 RADIO关掉后(状态变为RADIO_OFF),再向上发一个EVENT_RADIO_STATE_CHANGED通知,参考3.3。
原文作者:徐建祥(netpirate@gmail.com)
原文链接:http://blog.csdn.net/netpirate/archive/2009/11/05/4773273.aspx
- Android 1.5: 飞行模式分析
- Android 1.5: 飞行模式分析
- Android 1.5: 飞行模式分析
- Android 1.5: 飞行模式分析
- android 飞行模式分析
- android 飞行模式分析
- android donut 飞行模式分析
- android 飞行模式记录
- Android 设置飞行模式
- Android飞行模式开发
- android 系统飞行模式开启
- Android之开关飞行模式
- Android之开关飞行模式
- android 定时开启飞行模式
- Android笔记之飞行模式
- Android 设置飞行模式,判断是否是飞行模式
- Android 设置飞行模式,判断是否是飞行模式
- Android判断是否飞行模式已经监听飞行模式
- 开发笔记记录一下
- 在Linux里设置环境变量的方法(export PATH)
- 对硬盘上的文件可否实现并行存取
- python socket分发消息例子(续)
- [精华] zt:Eclipse使用入门
- Android 1.5: 飞行模式分析
- 如何得到web工程的路径
- 递归训练 数组的二叉 查找
- Android 飞行模式的设置(打开/关闭飞行模式,获取飞行状态状态)
- riyu xuexiea
- 数据怎样改变我们的世界
- 门面模式(Facade) - (05)
- apache.commons.io的使用
- Android应用开发UI(自动提示)自动补全