am f9e2a491
: Fix issue to clear scan alarms
* commit 'f9e2a491176b086cd3c238b209e025cd68d76001': Fix issue to clear scan alarms
This commit is contained in:
@ -2730,11 +2730,30 @@ public class WifiStateMachine extends HierarchicalStateMachine {
|
|||||||
|
|
||||||
class DisconnectedState extends HierarchicalState {
|
class DisconnectedState extends HierarchicalState {
|
||||||
private boolean mAlarmEnabled = false;
|
private boolean mAlarmEnabled = false;
|
||||||
|
private long mScanIntervalMs;
|
||||||
|
|
||||||
|
private void setScanAlarm(boolean enabled) {
|
||||||
|
if (enabled == mAlarmEnabled) return;
|
||||||
|
if (enabled) {
|
||||||
|
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
|
||||||
|
System.currentTimeMillis() + mScanIntervalMs,
|
||||||
|
mScanIntervalMs,
|
||||||
|
mScanIntent);
|
||||||
|
|
||||||
|
mAlarmEnabled = true;
|
||||||
|
} else {
|
||||||
|
mAlarmManager.cancel(mScanIntent);
|
||||||
|
mAlarmEnabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enter() {
|
public void enter() {
|
||||||
if (DBG) Log.d(TAG, getName() + "\n");
|
if (DBG) Log.d(TAG, getName() + "\n");
|
||||||
EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName());
|
EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName());
|
||||||
|
|
||||||
|
mScanIntervalMs = Settings.Secure.getLong(mContext.getContentResolver(),
|
||||||
|
Settings.Secure.WIFI_SCAN_INTERVAL_MS, DEFAULT_SCAN_INTERVAL_MS);
|
||||||
/*
|
/*
|
||||||
* We initiate background scanning if it is enabled, otherwise we
|
* We initiate background scanning if it is enabled, otherwise we
|
||||||
* initiate an infrequent scan that wakes up the device to ensure
|
* initiate an infrequent scan that wakes up the device to ensure
|
||||||
@ -2751,12 +2770,7 @@ public class WifiStateMachine extends HierarchicalStateMachine {
|
|||||||
WifiNative.enableBackgroundScan(true);
|
WifiNative.enableBackgroundScan(true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
long scanMs = Settings.Secure.getLong(mContext.getContentResolver(),
|
setScanAlarm(true);
|
||||||
Settings.Secure.WIFI_SCAN_INTERVAL_MS, DEFAULT_SCAN_INTERVAL_MS);
|
|
||||||
|
|
||||||
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
|
|
||||||
System.currentTimeMillis() + scanMs, scanMs, mScanIntent);
|
|
||||||
mAlarmEnabled = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
@ -2774,7 +2788,13 @@ public class WifiStateMachine extends HierarchicalStateMachine {
|
|||||||
break;
|
break;
|
||||||
case CMD_ENABLE_BACKGROUND_SCAN:
|
case CMD_ENABLE_BACKGROUND_SCAN:
|
||||||
mEnableBackgroundScan = (message.arg1 == 1);
|
mEnableBackgroundScan = (message.arg1 == 1);
|
||||||
WifiNative.enableBackgroundScan(mEnableBackgroundScan);
|
if (mEnableBackgroundScan) {
|
||||||
|
WifiNative.enableBackgroundScan(true);
|
||||||
|
setScanAlarm(false);
|
||||||
|
} else {
|
||||||
|
WifiNative.enableBackgroundScan(false);
|
||||||
|
setScanAlarm(true);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
/* Ignore network disconnect */
|
/* Ignore network disconnect */
|
||||||
case NETWORK_DISCONNECTION_EVENT:
|
case NETWORK_DISCONNECTION_EVENT:
|
||||||
@ -2811,10 +2831,7 @@ public class WifiStateMachine extends HierarchicalStateMachine {
|
|||||||
if (mEnableBackgroundScan) {
|
if (mEnableBackgroundScan) {
|
||||||
WifiNative.enableBackgroundScan(false);
|
WifiNative.enableBackgroundScan(false);
|
||||||
}
|
}
|
||||||
if (mAlarmEnabled) {
|
setScanAlarm(false);
|
||||||
mAlarmManager.cancel(mScanIntent);
|
|
||||||
mAlarmEnabled = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user