From dd796e81c32293ec4425e7f0ad964a84af0df5ce Mon Sep 17 00:00:00 2001 From: Hemant Gupta Date: Tue, 24 Dec 2013 13:52:36 +0530 Subject: [PATCH 1/2] Bluetooth: HID: Use proper values of connection status This patch fixes issue in retrieving correct connection status when more than one hid device was connected to DUT. In such situation current implementation was sending STATE_DISCONNECTED as connection state because of wrong check of matching device as 1st device in connected device list. Instead of this now actual connection state device is retrieved from HidService. Change-Id: I2c766e9fc6eb9e97c3745016e38fa5c374c16539 --- src/com/android/settings/bluetooth/HidProfile.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) mode change 100755 => 100644 src/com/android/settings/bluetooth/HidProfile.java diff --git a/src/com/android/settings/bluetooth/HidProfile.java b/src/com/android/settings/bluetooth/HidProfile.java old mode 100755 new mode 100644 index 91e715d0a1b..4e4c6e00b98 --- a/src/com/android/settings/bluetooth/HidProfile.java +++ b/src/com/android/settings/bluetooth/HidProfile.java @@ -112,11 +112,8 @@ final class HidProfile implements LocalBluetoothProfile { if (mService == null) { return BluetoothProfile.STATE_DISCONNECTED; } - List deviceList = mService.getConnectedDevices(); - return !deviceList.isEmpty() && deviceList.get(0).equals(device) - ? mService.getConnectionState(device) - : BluetoothProfile.STATE_DISCONNECTED; + return mService.getConnectionState(device); } public boolean isPreferred(BluetoothDevice device) { From ab489de78486a8d4965d5a1a223b1ebbb301f2bd Mon Sep 17 00:00:00 2001 From: Sanket Padawe Date: Tue, 3 Mar 2015 17:43:38 -0800 Subject: [PATCH 2/2] DO NOT MERGE - Disable data sim selection when phone call is going on. Bug: 19301456 Bug: 19150497 Change-Id: I00109b7648af670eb041b3ef734c67454ce22dc3 --- src/com/android/settings/sim/SimSettings.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java index 5d963ed8542..0c2a66357e4 100644 --- a/src/com/android/settings/sim/SimSettings.java +++ b/src/com/android/settings/sim/SimSettings.java @@ -29,6 +29,7 @@ import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceScreen; import android.provider.SearchIndexableResource; +import android.telephony.PhoneStateListener; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -51,6 +52,8 @@ import com.android.settings.Utils; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.R; +import android.os.SystemProperties; +import com.android.internal.telephony.TelephonyProperties; import java.util.ArrayList; import java.util.List; @@ -245,10 +248,38 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable // FIXME: b/18385348, needs to handle null from getActiveSubscriptionInfoList if (DBG) log("[onResme] mSubInfoList=" + mSubInfoList); + final TelephonyManager tm = + (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE); + tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); + updateAvailableSubInfos(); updateAllOptions(); } + @Override + public void onPause() { + super.onPause(); + final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); + tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); + } + + private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { + // Disable Sim selection for Data when voice call is going on as changing the default data + // sim causes a modem reset currently and call gets disconnected + // ToDo : Add subtext on disabled preference to let user know that default data sim cannot + // be changed while call is going on + @Override + public void onCallStateChanged(int state, String incomingNumber) { + if (DBG) log("PhoneStateListener.onCallStateChanged: state=" + state); + final Preference pref = findPreference(KEY_CELLULAR_DATA); + if (pref != null) { + final boolean ecbMode = SystemProperties.getBoolean( + TelephonyProperties.PROPERTY_INECM_MODE, false); + pref.setEnabled((state == TelephonyManager.CALL_STATE_IDLE) && !ecbMode); + } + } + }; + @Override public boolean onPreferenceTreeClick(final PreferenceScreen preferenceScreen, final Preference preference) {