Merge change 1881 into donut
* changes: WifiService: Wifi power management change
This commit is contained in:
@@ -1449,10 +1449,12 @@ public class WifiService extends IWifiManager.Stub {
|
||||
Settings.System.getInt(mContext.getContentResolver(),
|
||||
Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0);
|
||||
if (action.equals(Intent.ACTION_SCREEN_ON)) {
|
||||
Log.d(TAG, "ACTION_SCREEN_ON");
|
||||
mAlarmManager.cancel(mIdleIntent);
|
||||
mDeviceIdle = false;
|
||||
mScreenOff = false;
|
||||
} else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
|
||||
Log.d(TAG, "ACTION_SCREEN_OFF");
|
||||
mScreenOff = true;
|
||||
/*
|
||||
* Set a timer to put Wi-Fi to sleep, but only if the screen is off
|
||||
@@ -1461,12 +1463,20 @@ public class WifiService extends IWifiManager.Stub {
|
||||
* or plugged in to AC).
|
||||
*/
|
||||
if (!shouldWifiStayAwake(stayAwakeConditions, mPluggedType)) {
|
||||
long triggerTime = System.currentTimeMillis() + idleMillis;
|
||||
mAlarmManager.set(AlarmManager.RTC_WAKEUP, triggerTime, mIdleIntent);
|
||||
if (!mWifiStateTracker.hasIpAddress()) {
|
||||
// do not keep Wifi awake when screen is off if Wifi is not fully active
|
||||
mDeviceIdle = true;
|
||||
updateWifiState();
|
||||
} else {
|
||||
long triggerTime = System.currentTimeMillis() + idleMillis;
|
||||
Log.d(TAG, "setting ACTION_DEVICE_IDLE timer for " + idleMillis + "ms");
|
||||
mAlarmManager.set(AlarmManager.RTC_WAKEUP, triggerTime, mIdleIntent);
|
||||
}
|
||||
}
|
||||
/* we can return now -- there's nothing to do until we get the idle intent back */
|
||||
return;
|
||||
} else if (action.equals(ACTION_DEVICE_IDLE)) {
|
||||
Log.d(TAG, "got ACTION_DEVICE_IDLE");
|
||||
mDeviceIdle = true;
|
||||
} else if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
|
||||
/*
|
||||
@@ -1477,9 +1487,11 @@ public class WifiService extends IWifiManager.Stub {
|
||||
* the already-set timer.
|
||||
*/
|
||||
int pluggedType = intent.getIntExtra("plugged", 0);
|
||||
Log.d(TAG, "ACTION_BATTERY_CHANGED pluggedType: " + pluggedType);
|
||||
if (mScreenOff && shouldWifiStayAwake(stayAwakeConditions, mPluggedType) &&
|
||||
!shouldWifiStayAwake(stayAwakeConditions, pluggedType)) {
|
||||
long triggerTime = System.currentTimeMillis() + idleMillis;
|
||||
Log.d(TAG, "setting ACTION_DEVICE_IDLE timer for " + idleMillis + "ms");
|
||||
mAlarmManager.set(AlarmManager.RTC_WAKEUP, triggerTime, mIdleIntent);
|
||||
mPluggedType = pluggedType;
|
||||
return;
|
||||
|
||||
@@ -161,8 +161,8 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
private WifiInfo mWifiInfo;
|
||||
private List<ScanResult> mScanResults;
|
||||
private WifiManager mWM;
|
||||
private boolean mHaveIPAddress;
|
||||
private boolean mObtainingIPAddress;
|
||||
private boolean mHaveIpAddress;
|
||||
private boolean mObtainingIpAddress;
|
||||
private boolean mTornDownByConnMgr;
|
||||
/**
|
||||
* A DISCONNECT event has been received, but processing it
|
||||
@@ -303,8 +303,8 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
|
||||
mWifiInfo = new WifiInfo();
|
||||
mWifiMonitor = new WifiMonitor(this);
|
||||
mHaveIPAddress = false;
|
||||
mObtainingIPAddress = false;
|
||||
mHaveIpAddress = false;
|
||||
mObtainingIpAddress = false;
|
||||
setTornDownByConnMgr(false);
|
||||
mDisconnectPending = false;
|
||||
mScanResults = new ArrayList<ScanResult>();
|
||||
@@ -443,6 +443,14 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
return mWifiInfo.getSupplicantState() == SupplicantState.COMPLETED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report whether the Wi-Fi connection has successfully acquired an IP address.
|
||||
* @return {@code true} if the Wi-Fi connection has been assigned an IP address.
|
||||
*/
|
||||
public boolean hasIpAddress() {
|
||||
return mHaveIpAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the tracker a notification that a user-entered password key
|
||||
* may be incorrect (i.e., caused authentication to fail).
|
||||
@@ -724,7 +732,7 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
intent.putExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, true);
|
||||
mContext.sendBroadcast(intent);
|
||||
}
|
||||
if (supplState == SupplicantState.COMPLETED && mHaveIPAddress) {
|
||||
if (supplState == SupplicantState.COMPLETED && mHaveIpAddress) {
|
||||
setDetailedState(DetailedState.CONNECTED);
|
||||
} else {
|
||||
setDetailedState(WifiInfo.getDetailedStateOf(supplState));
|
||||
@@ -783,8 +791,8 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
}
|
||||
setDetailedState(DetailedState.DISCONNECTED);
|
||||
setSupplicantState(SupplicantState.UNINITIALIZED);
|
||||
mHaveIPAddress = false;
|
||||
mObtainingIPAddress = false;
|
||||
mHaveIpAddress = false;
|
||||
mObtainingIpAddress = false;
|
||||
if (died) {
|
||||
mWM.setWifiEnabled(false);
|
||||
}
|
||||
@@ -954,7 +962,7 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
}
|
||||
requestConnectionStatus(mWifiInfo);
|
||||
if (!(result.state == DetailedState.CONNECTED &&
|
||||
(!mHaveIPAddress || mDisconnectPending))) {
|
||||
(!mHaveIpAddress || mDisconnectPending))) {
|
||||
setDetailedState(result.state);
|
||||
}
|
||||
|
||||
@@ -983,7 +991,7 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
mLastBssid = result.BSSID;
|
||||
mLastSsid = mWifiInfo.getSSID();
|
||||
mLastNetworkId = result.networkId;
|
||||
if (mHaveIPAddress) {
|
||||
if (mHaveIpAddress) {
|
||||
setDetailedState(DetailedState.CONNECTED);
|
||||
} else {
|
||||
setDetailedState(DetailedState.OBTAINING_IPADDR);
|
||||
@@ -1051,8 +1059,8 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
break;
|
||||
}
|
||||
mReconnectCount = 0;
|
||||
mHaveIPAddress = true;
|
||||
mObtainingIPAddress = false;
|
||||
mHaveIpAddress = true;
|
||||
mObtainingIpAddress = false;
|
||||
mWifiInfo.setIpAddress(mDhcpInfo.ipAddress);
|
||||
mLastSignalLevel = -1; // force update of signal strength
|
||||
if (mNetworkInfo.getDetailedState() != DetailedState.CONNECTED) {
|
||||
@@ -1078,9 +1086,9 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
// [ 0- 0] Interface configuration succeeded (1) or failed (0)
|
||||
EventLog.writeEvent(EVENTLOG_INTERFACE_CONFIGURATION_STATE_CHANGED, 0);
|
||||
|
||||
mHaveIPAddress = false;
|
||||
mHaveIpAddress = false;
|
||||
mWifiInfo.setIpAddress(0);
|
||||
mObtainingIPAddress = false;
|
||||
mObtainingIpAddress = false;
|
||||
synchronized(this) {
|
||||
WifiNative.disconnectCommand();
|
||||
}
|
||||
@@ -1156,18 +1164,18 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
setPollTimer();
|
||||
mLastSignalLevel = -1;
|
||||
if (!mUseStaticIp) {
|
||||
if (!mHaveIPAddress && !mObtainingIPAddress) {
|
||||
mObtainingIPAddress = true;
|
||||
if (!mHaveIpAddress && !mObtainingIpAddress) {
|
||||
mObtainingIpAddress = true;
|
||||
mDhcpTarget.sendEmptyMessage(EVENT_DHCP_START);
|
||||
}
|
||||
} else {
|
||||
int event;
|
||||
if (NetworkUtils.configureInterface(mInterfaceName, mDhcpInfo)) {
|
||||
mHaveIPAddress = true;
|
||||
mHaveIpAddress = true;
|
||||
event = EVENT_INTERFACE_CONFIGURATION_SUCCEEDED;
|
||||
if (LOCAL_LOGD) Log.v(TAG, "Static IP configuration succeeded");
|
||||
} else {
|
||||
mHaveIPAddress = false;
|
||||
mHaveIpAddress = false;
|
||||
event = EVENT_INTERFACE_CONFIGURATION_FAILED;
|
||||
if (LOCAL_LOGD) Log.v(TAG, "Static IP configuration failed");
|
||||
}
|
||||
@@ -1200,8 +1208,8 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
* using the interface, stopping DHCP, and disabling the interface.
|
||||
*/
|
||||
public void resetInterface() {
|
||||
mHaveIPAddress = false;
|
||||
mObtainingIPAddress = false;
|
||||
mHaveIpAddress = false;
|
||||
mObtainingIpAddress = false;
|
||||
mWifiInfo.setIpAddress(0);
|
||||
|
||||
/*
|
||||
@@ -1612,8 +1620,8 @@ public class WifiStateTracker extends NetworkStateTracker {
|
||||
}
|
||||
sb.append(LS).append(mWifiInfo).append(LS);
|
||||
sb.append(mDhcpInfo).append(LS);
|
||||
sb.append("haveIpAddress=").append(mHaveIPAddress).
|
||||
append(", obtainingIpAddress=").append(mObtainingIPAddress).
|
||||
sb.append("haveIpAddress=").append(mHaveIpAddress).
|
||||
append(", obtainingIpAddress=").append(mObtainingIpAddress).
|
||||
append(", scanModeActive=").append(mIsScanModeActive).append(LS).
|
||||
append("lastSignalLevel=").append(mLastSignalLevel).
|
||||
append(", explicitlyDisabled=").append(mTornDownByConnMgr);
|
||||
|
||||
Reference in New Issue
Block a user