diff options
| author | Hung-ying Tyan <tyanh@google.com> | 2011-07-01 19:25:46 +0800 |
|---|---|---|
| committer | Hung-ying Tyan <tyanh@google.com> | 2011-07-01 19:25:46 +0800 |
| commit | 987b505b1c190ff0e5a05d2cc20c9b08d2b99b18 (patch) | |
| tree | 3bbe0e564250dd0ef05ffd45970caf9bc97e4dbc /java | |
| parent | 42cdc7a9d3f94260768f38de4f477ec4e418e19a (diff) | |
| download | android_frameworks_opt_net_voip-987b505b1c190ff0e5a05d2cc20c9b08d2b99b18.tar.gz android_frameworks_opt_net_voip-987b505b1c190ff0e5a05d2cc20c9b08d2b99b18.tar.bz2 android_frameworks_opt_net_voip-987b505b1c190ff0e5a05d2cc20c9b08d2b99b18.zip | |
Do not hold wifi lock when SIP is also available over mobile network.
Bug: 3111564
Change-Id: Ifc76e5c378d620e40ce4adf6ffa20807e9750fdb
Diffstat (limited to 'java')
| -rw-r--r-- | java/com/android/server/sip/SipService.java | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/java/com/android/server/sip/SipService.java b/java/com/android/server/sip/SipService.java index 47863bd..ddc8031 100644 --- a/java/com/android/server/sip/SipService.java +++ b/java/com/android/server/sip/SipService.java @@ -83,6 +83,8 @@ public final class SipService extends ISipService.Stub { private WifiScanProcess mWifiScanProcess; private WifiManager.WifiLock mWifiLock; private boolean mWifiOnly; + private BroadcastReceiver mWifiStateReceiver = null; + private IntervalMeasurementProcess mIntervalMeasurementProcess; private MyExecutor mExecutor = new MyExecutor(); @@ -123,40 +125,47 @@ public final class SipService extends ISipService.Stub { mWifiOnly = SipManager.isSipWifiOnly(context); } - private BroadcastReceiver mWifiStateReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) { - int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, - WifiManager.WIFI_STATE_UNKNOWN); - synchronized (SipService.this) { - switch (state) { - case WifiManager.WIFI_STATE_ENABLED: - mWifiEnabled = true; - if (anyOpenedToReceiveCalls()) grabWifiLock(); - break; - case WifiManager.WIFI_STATE_DISABLED: - mWifiEnabled = false; - releaseWifiLock(); - break; + private BroadcastReceiver createWifiBroadcastReceiver() { + return new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) { + int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, + WifiManager.WIFI_STATE_UNKNOWN); + synchronized (SipService.this) { + switch (state) { + case WifiManager.WIFI_STATE_ENABLED: + mWifiEnabled = true; + if (anyOpenedToReceiveCalls()) grabWifiLock(); + break; + case WifiManager.WIFI_STATE_DISABLED: + mWifiEnabled = false; + releaseWifiLock(); + break; + } } } } - } + }; }; private void registerReceivers() { mContext.registerReceiver(mConnectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); - mContext.registerReceiver(mWifiStateReceiver, - new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)); + if (SipManager.isSipWifiOnly(mContext)) { + mWifiStateReceiver = createWifiBroadcastReceiver(); + mContext.registerReceiver(mWifiStateReceiver, + new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)); + } if (DEBUG) Log.d(TAG, " +++ register receivers"); } private void unregisterReceivers() { mContext.unregisterReceiver(mConnectivityReceiver); - mContext.unregisterReceiver(mWifiStateReceiver); + if (SipManager.isSipWifiOnly(mContext)) { + mContext.unregisterReceiver(mWifiStateReceiver); + } if (DEBUG) Log.d(TAG, " --- unregister receivers"); } |
