Merge change 7145 into donut

* changes:
  wifi: Disable RSSI polling when the screen is off.
This commit is contained in:
Android (Google) Code Review
2009-07-14 16:43:00 -07:00
2 changed files with 19 additions and 6 deletions

View File

@ -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

View File

@ -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) {