diff options
author | Chung-yih Wang <cywang@google.com> | 2010-10-08 23:25:11 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-08 23:25:11 -0700 |
commit | dc2e5208e2b448a2c481d726818de79ea6a49783 (patch) | |
tree | 3949556ff3f6e9c1bce8261776c5a4171f2326ae /voip | |
parent | bed5af7ebcd195a2ab5e16fc03ee8b61a4d7aec6 (diff) | |
parent | c7fda188aee215f1842111f5b9f711f7b844b4d4 (diff) | |
download | frameworks_base-dc2e5208e2b448a2c481d726818de79ea6a49783.zip frameworks_base-dc2e5208e2b448a2c481d726818de79ea6a49783.tar.gz frameworks_base-dc2e5208e2b448a2c481d726818de79ea6a49783.tar.bz2 |
Merge "Do not release the wifi lock if the screen is off." into gingerbread
Diffstat (limited to 'voip')
-rw-r--r-- | voip/java/com/android/server/sip/SipService.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/voip/java/com/android/server/sip/SipService.java b/voip/java/com/android/server/sip/SipService.java index db1931b..ee554b5 100644 --- a/voip/java/com/android/server/sip/SipService.java +++ b/voip/java/com/android/server/sip/SipService.java @@ -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(); } |