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) { WifiService(Context context, WifiStateTracker tracker) {
mContext = context; mContext = context;
mWifiStateTracker = tracker; mWifiStateTracker = tracker;
mWifiStateTracker.enableRssiPolling(true);
mBatteryStats = BatteryStatsService.getService(); mBatteryStats = BatteryStatsService.getService();
/* /*
@ -1560,9 +1561,11 @@ public class WifiService extends IWifiManager.Stub {
mAlarmManager.cancel(mIdleIntent); mAlarmManager.cancel(mIdleIntent);
mDeviceIdle = false; mDeviceIdle = false;
mScreenOff = false; mScreenOff = false;
mWifiStateTracker.enableRssiPolling(true);
} else if (action.equals(Intent.ACTION_SCREEN_OFF)) { } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
Log.d(TAG, "ACTION_SCREEN_OFF"); Log.d(TAG, "ACTION_SCREEN_OFF");
mScreenOff = true; mScreenOff = true;
mWifiStateTracker.enableRssiPolling(false);
/* /*
* Set a timer to put Wi-Fi to sleep, but only if the screen is off * 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 * 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 mIsScanModeActive;
private boolean mIsScanModeSetDueToAHiddenNetwork; private boolean mIsScanModeSetDueToAHiddenNetwork;
private boolean mEnableRssiPolling;
// Wi-Fi run states: // Wi-Fi run states:
private static final int RUN_STATE_STARTING = 1; private static final int RUN_STATE_STARTING = 1;
@ -338,6 +339,7 @@ public class WifiStateTracker extends NetworkStateTracker {
private void setSupplicantState(SupplicantState state) { private void setSupplicantState(SupplicantState state) {
mWifiInfo.setSupplicantState(state); mWifiInfo.setSupplicantState(state);
updateNetworkInfo(); updateNetworkInfo();
checkPollTimer();
} }
public SupplicantState getSupplicantState() { public SupplicantState getSupplicantState() {
@ -352,6 +354,7 @@ public class WifiStateTracker extends NetworkStateTracker {
private void setSupplicantState(String stateName) { private void setSupplicantState(String stateName) {
mWifiInfo.setSupplicantState(stateName); mWifiInfo.setSupplicantState(stateName);
updateNetworkInfo(); updateNetworkInfo();
checkPollTimer();
} }
/** /**
@ -540,8 +543,10 @@ public class WifiStateTracker extends NetworkStateTracker {
* Set the interval timer for polling connection information * Set the interval timer for polling connection information
* that is not delivered asynchronously. * that is not delivered asynchronously.
*/ */
private synchronized void setPollTimer () { private synchronized void checkPollTimer() {
if (!hasMessages(EVENT_POLL_INTERVAL)) { if (mEnableRssiPolling &&
mWifiInfo.getSupplicantState() == SupplicantState.COMPLETED &&
!hasMessages(EVENT_POLL_INTERVAL)) {
sendEmptyMessageDelayed(EVENT_POLL_INTERVAL, POLL_STATUS_INTERVAL_MSECS); sendEmptyMessageDelayed(EVENT_POLL_INTERVAL, POLL_STATUS_INTERVAL_MSECS);
} }
} }
@ -637,6 +642,13 @@ public class WifiStateTracker extends NetworkStateTracker {
setBluetoothScanMode(isBluetoothPlaying); setBluetoothScanMode(isBluetoothPlaying);
} }
public void enableRssiPolling(boolean enable) {
if (mEnableRssiPolling != enable) {
mEnableRssiPolling = enable;
checkPollTimer();
}
}
@Override @Override
public void releaseWakeLock() { public void releaseWakeLock() {
if (mReleaseWakeLockCallback != null) { if (mReleaseWakeLockCallback != null) {
@ -1022,9 +1034,7 @@ public class WifiStateTracker extends NetworkStateTracker {
case EVENT_POLL_INTERVAL: case EVENT_POLL_INTERVAL:
if (mWifiInfo.getSupplicantState() != SupplicantState.UNINITIALIZED) { if (mWifiInfo.getSupplicantState() != SupplicantState.UNINITIALIZED) {
requestPolledInfo(mWifiInfo); requestPolledInfo(mWifiInfo);
if (mWifiInfo.getSupplicantState() == SupplicantState.COMPLETED) { checkPollTimer();
setPollTimer();
}
} }
break; break;
@ -1163,7 +1173,7 @@ public class WifiStateTracker extends NetworkStateTracker {
} }
private void configureInterface() { private void configureInterface() {
setPollTimer(); checkPollTimer();
mLastSignalLevel = -1; mLastSignalLevel = -1;
if (!mUseStaticIp) { if (!mUseStaticIp) {
if (!mHaveIpAddress && !mObtainingIpAddress) { if (!mHaveIpAddress && !mObtainingIpAddress) {