Merge "Do not release the wifi lock if the screen is off." into gingerbread
This commit is contained in:
committed by
Android (Google) Code Review
commit
dc2e5208e2
@ -92,6 +92,7 @@ public final class SipService extends ISipService.Stub {
|
|||||||
new HashMap<String, ISipSession>();
|
new HashMap<String, ISipSession>();
|
||||||
|
|
||||||
private ConnectivityReceiver mConnectivityReceiver;
|
private ConnectivityReceiver mConnectivityReceiver;
|
||||||
|
private boolean mScreenOn;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the SIP service. Do nothing if the SIP API is not supported on the
|
* Starts the SIP service. Do nothing if the SIP API is not supported on the
|
||||||
@ -111,11 +112,27 @@ public final class SipService extends ISipService.Stub {
|
|||||||
mConnectivityReceiver = new ConnectivityReceiver();
|
mConnectivityReceiver = new ConnectivityReceiver();
|
||||||
context.registerReceiver(mConnectivityReceiver,
|
context.registerReceiver(mConnectivityReceiver,
|
||||||
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
||||||
|
context.registerReceiver(mScreenOnOffReceiver,
|
||||||
|
new IntentFilter(Intent.ACTION_SCREEN_ON));
|
||||||
|
context.registerReceiver(mScreenOnOffReceiver,
|
||||||
|
new IntentFilter(Intent.ACTION_SCREEN_OFF));
|
||||||
|
|
||||||
mTimer = new WakeupTimer(context);
|
mTimer = new WakeupTimer(context);
|
||||||
mWifiOnly = SipManager.isSipWifiOnly(context);
|
mWifiOnly = SipManager.isSipWifiOnly(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BroadcastReceiver mScreenOnOffReceiver = new BroadcastReceiver() {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
String action = intent.getAction();
|
||||||
|
if (Intent.ACTION_SCREEN_OFF.equals(action)) {
|
||||||
|
mScreenOn = true;
|
||||||
|
} else if (Intent.ACTION_SCREEN_ON.equals(action)) {
|
||||||
|
mScreenOn = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private MyExecutor getExecutor() {
|
private MyExecutor getExecutor() {
|
||||||
// create mExecutor lazily
|
// create mExecutor lazily
|
||||||
if (mExecutor == null) mExecutor = new MyExecutor();
|
if (mExecutor == null) mExecutor = new MyExecutor();
|
||||||
@ -366,7 +383,10 @@ public final class SipService extends ISipService.Stub {
|
|||||||
boolean wifiOff = (isWifi && !connected) || (wasWifi && !sameType);
|
boolean wifiOff = (isWifi && !connected) || (wasWifi && !sameType);
|
||||||
boolean wifiOn = isWifi && connected;
|
boolean wifiOn = isWifi && connected;
|
||||||
if (wifiOff) {
|
if (wifiOff) {
|
||||||
releaseWifiLock();
|
if (mScreenOn) releaseWifiLock();
|
||||||
|
// If the screen is off, we still keep the wifi lock in order
|
||||||
|
// to be able to reassociate with any available AP. Otherwise,
|
||||||
|
// the wifi driver could be stopped after 15 mins of idle time.
|
||||||
} else if (wifiOn) {
|
} else if (wifiOn) {
|
||||||
if (anyOpened()) grabWifiLock();
|
if (anyOpened()) grabWifiLock();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user