Merge change 7145 into donut
* changes: wifi: Disable RSSI polling when the screen is off.
This commit is contained in:
@ -192,6 +192,7 @@ public class WifiService extends IWifiManager.Stub {
|
||||
WifiService(Context context, WifiStateTracker tracker) {
|
||||
mContext = context;
|
||||
mWifiStateTracker = tracker;
|
||||
mWifiStateTracker.enableRssiPolling(true);
|
||||
mBatteryStats = BatteryStatsService.getService();
|
||||
|
||||
/*
|
||||
@ -1560,9 +1561,11 @@ public class WifiService extends IWifiManager.Stub {
|
||||
mAlarmManager.cancel(mIdleIntent);
|
||||
mDeviceIdle = false;
|
||||
mScreenOff = false;
|
||||
mWifiStateTracker.enableRssiPolling(true);
|
||||
} else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
|
||||
Log.d(TAG, "ACTION_SCREEN_OFF");
|
||||
mScreenOff = true;
|
||||
mWifiStateTracker.enableRssiPolling(false);
|
||||
/*
|
||||
* Set a timer to put Wi-Fi to sleep, but only if the screen is off
|
||||
* AND the "stay on while plugged in" setting doesn't match the
|
||||
|
@ -239,6 +239,7 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
|
||||
private boolean mIsScanModeActive;
|
||||
private boolean mIsScanModeSetDueToAHiddenNetwork;
|
||||
private boolean mEnableRssiPolling;
|
||||
|
||||
// Wi-Fi run states:
|
||||
private static final int RUN_STATE_STARTING = 1;
|
||||
@ -338,6 +339,7 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
private void setSupplicantState(SupplicantState state) {
|
||||
mWifiInfo.setSupplicantState(state);
|
||||
updateNetworkInfo();
|
||||
checkPollTimer();
|
||||
}
|
||||
|
||||
public SupplicantState getSupplicantState() {
|
||||
@ -352,6 +354,7 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
private void setSupplicantState(String stateName) {
|
||||
mWifiInfo.setSupplicantState(stateName);
|
||||
updateNetworkInfo();
|
||||
checkPollTimer();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -540,8 +543,10 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
* Set the interval timer for polling connection information
|
||||
* that is not delivered asynchronously.
|
||||
*/
|
||||
private synchronized void setPollTimer () {
|
||||
if (!hasMessages(EVENT_POLL_INTERVAL)) {
|
||||
private synchronized void checkPollTimer() {
|
||||
if (mEnableRssiPolling &&
|
||||
mWifiInfo.getSupplicantState() == SupplicantState.COMPLETED &&
|
||||
!hasMessages(EVENT_POLL_INTERVAL)) {
|
||||
sendEmptyMessageDelayed(EVENT_POLL_INTERVAL, POLL_STATUS_INTERVAL_MSECS);
|
||||
}
|
||||
}
|
||||
@ -637,6 +642,13 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
setBluetoothScanMode(isBluetoothPlaying);
|
||||
}
|
||||
|
||||
public void enableRssiPolling(boolean enable) {
|
||||
if (mEnableRssiPolling != enable) {
|
||||
mEnableRssiPolling = enable;
|
||||
checkPollTimer();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseWakeLock() {
|
||||
if (mReleaseWakeLockCallback != null) {
|
||||
@ -1022,9 +1034,7 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
case EVENT_POLL_INTERVAL:
|
||||
if (mWifiInfo.getSupplicantState() != SupplicantState.UNINITIALIZED) {
|
||||
requestPolledInfo(mWifiInfo);
|
||||
if (mWifiInfo.getSupplicantState() == SupplicantState.COMPLETED) {
|
||||
setPollTimer();
|
||||
}
|
||||
checkPollTimer();
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1163,7 +1173,7 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
}
|
||||
|
||||
private void configureInterface() {
|
||||
setPollTimer();
|
||||
checkPollTimer();
|
||||
mLastSignalLevel = -1;
|
||||
if (!mUseStaticIp) {
|
||||
if (!mHaveIpAddress && !mObtainingIpAddress) {
|
||||
|
Reference in New Issue
Block a user