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>();
|
||||
|
||||
private ConnectivityReceiver mConnectivityReceiver;
|
||||
private boolean mScreenOn;
|
||||
|
||||
/**
|
||||
* 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();
|
||||
context.registerReceiver(mConnectivityReceiver,
|
||||
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);
|
||||
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() {
|
||||
// create mExecutor lazily
|
||||
if (mExecutor == null) mExecutor = new MyExecutor();
|
||||
@ -366,7 +383,10 @@ public final class SipService extends ISipService.Stub {
|
||||
boolean wifiOff = (isWifi && !connected) || (wasWifi && !sameType);
|
||||
boolean wifiOn = isWifi && connected;
|
||||
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) {
|
||||
if (anyOpened()) grabWifiLock();
|
||||
}
|
||||
|
Reference in New Issue
Block a user