From 469c8128786154cb8c0408709545f7adc6beaeb7 Mon Sep 17 00:00:00 2001 From: PauloftheWest Date: Thu, 4 Sep 2014 14:45:40 -0700 Subject: [PATCH] Turning Bluetooth on will make the device discoverable. Bug: 17368189 Change-Id: Ic526fb1ff9dcc15e6fe1db055a471cc570b6a2e1 --- .../settings/bluetooth/BluetoothSettings.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java index ec288f3dc0d..1bc81cfa521 100755 --- a/src/com/android/settings/bluetooth/BluetoothSettings.java +++ b/src/com/android/settings/bluetooth/BluetoothSettings.java @@ -83,6 +83,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem private boolean mAvailableDevicesCategoryIsPresent; private boolean mInitialScanStarted; + private boolean mInitiateDiscoverable; private TextView mEmptyView; private SwitchBar mSwitchBar; @@ -119,6 +120,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mInitialScanStarted = (savedInstanceState != null); // don't auto start scan after rotation + mInitiateDiscoverable = true; mEmptyView = (TextView) getView().findViewById(android.R.id.empty); getListView().setEmptyView(mEmptyView); @@ -153,8 +155,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem } super.onResume(); - // Make the device visible to other devices. - mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE); + mInitiateDiscoverable = true; if (isUiRestricted()) { setDeviceListGroup(getPreferenceScreen()); @@ -325,6 +326,14 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem preferenceScreen.addPreference(mMyDevicePreference); getActivity().invalidateOptionsMenu(); + + // mLocalAdapter.setScanMode is internally synchronized so it is okay for multiple + // threads to execute. + if (mInitiateDiscoverable) { + // Make the device visible to other devices. + mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE); + mInitiateDiscoverable = false; + } return; // not break case BluetoothAdapter.STATE_TURNING_OFF: