代码改变世界

飞行模式(Airplane mode)机制

2010-12-21 10:26  RayLee  阅读(869)  评论(0编辑  收藏  举报

在“设置”->“无线和网络”,有一项飞行模式的checkbox。根据其描述“禁用所有无线连接”,可略知其功能,但具体实现了哪些功能呢,我们从代码的角度来分析。

在类WirelessSettings中,包含一个成员变量mAirplaneModeEnabler,飞行模式的功能是由类AirplaneModeEnabler来实现的。setAirplaneModeOn(boolean enabling)是该类用来设置飞行模式开关的方法,该方法最重要的实现是广播Intent.ACTION_AIRPLANE_MODE_CHANGED,并携带开/关的标志位。

Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", enabling);
mContext.sendBroadcast(intent);
查找源代码,有3个模块响应该事件。

1. PhoneApp:关闭电话射频信号

2. WifiService:关闭wifi信号

3. BluetoothService:关闭bluetooth信号

但wifi模块稍有区别,即使在飞行模式下,wifi也可以开启。