OSDN Git Service

Turning Bluetooth on will make the device discoverable.
authorPauloftheWest <paulofthewest@google.com>
Thu, 4 Sep 2014 21:45:40 +0000 (14:45 -0700)
committerPauloftheWest <paulofthewest@google.com>
Mon, 8 Sep 2014 20:31:53 +0000 (13:31 -0700)
Bug: 17368189
Change-Id: Ic526fb1ff9dcc15e6fe1db055a471cc570b6a2e1

src/com/android/settings/bluetooth/BluetoothSettings.java

index ec288f3..1bc81cf 100755 (executable)
@@ -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: