summaryrefslogtreecommitdiff
path: root/wifi/java
diff options
context:
space:
mode:
author Irfan Sheriff <isheriff@google.com> 2012-08-09 15:07:45 -0700
committer Irfan Sheriff <isheriff@google.com> 2012-08-09 15:50:55 -0700
commit3fb4ba616edb114b3197936eb67f481eb86b7cae (patch)
treeca4aa7e7438988b608e058388d4bbec9ae055026 /wifi/java
parent2c02933b13b426637808d3d4fd57aea1ff11011a (diff)
Add control to disable suspend optimizations
Add an advanced setting that allows user to turn off power savings at screen off. Bug: 5885175 Change-Id: I2dd013b86d7500a2ad1f9ec75d86551808f05543
Diffstat (limited to 'wifi/java')
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java33
1 files changed, 29 insertions, 4 deletions
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index c4807598c468..a8975ff76acc 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -41,6 +41,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
+import android.database.ContentObserver;
import android.net.ConnectivityManager;
import android.net.DhcpInfo;
import android.net.DhcpInfoInternal;
@@ -138,6 +139,8 @@ public class WifiStateMachine extends StateMachine {
private boolean mSetScanActive = false;
/* High perf mode is true if an app has held a high perf Wifi Lock */
private boolean mHighPerfMode = false;
+ /* Tracks if user has disabled suspend optimizations through settings */
+ private AtomicBoolean mSuspendOptEnabled = new AtomicBoolean(true);
private boolean mBluetoothConnectionActive = false;
@@ -591,6 +594,9 @@ public class WifiStateMachine extends StateMachine {
mPrimaryDeviceType = mContext.getResources().getString(
com.android.internal.R.string.config_wifi_p2p_device_type);
+ mSuspendOptEnabled.set(Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED, 1) == 1);
+
mContext.registerReceiver(
new BroadcastReceiver() {
@Override
@@ -626,18 +632,25 @@ public class WifiStateMachine extends StateMachine {
enableBackgroundScanCommand(false);
}
enableAllNetworks();
- sendMessage(CMD_CLEAR_SUSPEND_OPTIMIZATIONS);
+ if (mSuspendOptEnabled.get()) {
+ if (DBG) log("Clear suspend optimizations");
+ sendMessage(CMD_CLEAR_SUSPEND_OPTIMIZATIONS);
+ }
} else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
enableRssiPolling(false);
if (mBackgroundScanSupported) {
enableBackgroundScanCommand(true);
}
- //Allow 2s for suspend optimizations to be set
- mSuspendWakeLock.acquire(2000);
- sendMessage(CMD_SET_SUSPEND_OPTIMIZATIONS);
+ if (mSuspendOptEnabled.get()) {
+ if (DBG) log("Enable suspend optimizations");
+ //Allow 2s for suspend optimizations to be set
+ mSuspendWakeLock.acquire(2000);
+ sendMessage(CMD_SET_SUSPEND_OPTIMIZATIONS);
+ }
}
}
};
+
mContext.registerReceiver(
new BroadcastReceiver() {
@Override
@@ -648,6 +661,16 @@ public class WifiStateMachine extends StateMachine {
},
new IntentFilter(ACTION_DELAYED_DRIVER_STOP));
+ mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
+ Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED), false,
+ new ContentObserver(getHandler()) {
+ @Override
+ public void onChange(boolean selfChange) {
+ mSuspendOptEnabled.set(Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED, 1) == 1);
+ }
+ });
+
mScanResultCache = new LruCache<String, ScanResult>(SCAN_RESULT_CACHE_SIZE);
PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
@@ -1133,6 +1156,8 @@ public class WifiStateMachine extends StateMachine {
sb.append("mLastNetworkId ").append(mLastNetworkId).append(LS);
sb.append("mReconnectCount ").append(mReconnectCount).append(LS);
sb.append("mIsScanMode ").append(mIsScanMode).append(LS);
+ sb.append("mHighPerfMode").append(mHighPerfMode).append(LS);
+ sb.append("mSuspendOptEnabled").append(mSuspendOptEnabled).append(LS);
sb.append("Supplicant status").append(LS)
.append(mWifiNative.status()).append(LS).append(LS);