diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-30 08:35:03 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-30 08:35:03 -0700 |
commit | ba272be7253ce2002d85bb03c32848413f7bcf8d (patch) | |
tree | bd1c33b034e32a679899e58113b13ca1c5bf68f5 /services | |
parent | c17ae711e9e265ab6dc85f18a7c35de957a43524 (diff) | |
parent | bd5ddf01e4d629982fa8bb667d4be7c5ec3aa79f (diff) | |
download | frameworks_base-ba272be7253ce2002d85bb03c32848413f7bcf8d.zip frameworks_base-ba272be7253ce2002d85bb03c32848413f7bcf8d.tar.gz frameworks_base-ba272be7253ce2002d85bb03c32848413f7bcf8d.tar.bz2 |
Merge change 9097
* changes:
Wifi: Add support for enabling Wifi while in airplane mode.
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/WifiService.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java index f25c221..d4e57d2 100644 --- a/services/java/com/android/server/WifiService.java +++ b/services/java/com/android/server/WifiService.java @@ -93,6 +93,9 @@ public class WifiService extends IWifiManager.Stub { private boolean mDeviceIdle; private int mPluggedType; + // true if the user enabled Wifi while in airplane mode + private boolean mAirplaneModeOverwridden; + private final LockList mLocks = new LockList(); // some wifi lock statistics private int mFullLocksAcquired; @@ -219,6 +222,8 @@ public class WifiService extends IWifiManager.Stub { new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { + // clear our flag indicating the user has overwridden airplane mode + mAirplaneModeOverwridden = false; updateWifiState(); } }, @@ -292,6 +297,8 @@ public class WifiService extends IWifiManager.Stub { synchronized (mWifiHandler) { sWakeLock.acquire(); mLastEnableUid = Binder.getCallingUid(); + // set a flag if the user is enabling Wifi while in airplane mode + mAirplaneModeOverwridden = (enable && isAirplaneModeOn() && isAirplaneToggleable()); sendEnableMessage(enable, true, Binder.getCallingUid()); } @@ -312,7 +319,7 @@ public class WifiService extends IWifiManager.Stub { if (mWifiState == eventualWifiState) { return true; } - if (enable && isAirplaneModeOn()) { + if (enable && isAirplaneModeOn() && !mAirplaneModeOverwridden) { return false; } @@ -1495,7 +1502,7 @@ public class WifiService extends IWifiManager.Stub { private void updateWifiState() { boolean wifiEnabled = getPersistedWifiEnabled(); - boolean airplaneMode = isAirplaneModeOn(); + boolean airplaneMode = isAirplaneModeOn() && !mAirplaneModeOverwridden; boolean lockHeld = mLocks.hasLocks(); int strongestLockMode; boolean wifiShouldBeEnabled = wifiEnabled && !airplaneMode; @@ -1559,6 +1566,13 @@ public class WifiService extends IWifiManager.Stub { || airplaneModeRadios.contains(Settings.System.RADIO_WIFI); } + private boolean isAirplaneToggleable() { + String toggleableRadios = Settings.System.getString(mContext.getContentResolver(), + Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS); + return toggleableRadios != null + && toggleableRadios.contains(Settings.System.RADIO_WIFI); + } + /** * Returns true if Wi-Fi is sensitive to airplane mode, and airplane mode is * currently on. |