diff --git a/src/com/android/settings/bluetooth/DevicePickerFragment.java b/src/com/android/settings/bluetooth/DevicePickerFragment.java
index 60470c5..4af3732 100644
--- a/src/com/android/settings/bluetooth/DevicePickerFragment.java
+++ b/src/com/android/settings/bluetooth/DevicePickerFragment.java
@@ -23,6 +23,7 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.UserManager;
+import android.support.annotation.VisibleForTesting;
 import android.view.Menu;
 import android.view.MenuInflater;
 
@@ -43,15 +44,18 @@
     private static final String KEY_BT_DEVICE_LIST = "bt_device_list";
     private static final String TAG = "DevicePickerFragment";
 
-    public DevicePickerFragment() {
-        super(null /* Not tied to any user restrictions. */);
-    }
+    @VisibleForTesting
+    BluetoothProgressCategory mAvailableDevicesCategory;
 
     private boolean mNeedAuth;
     private String mLaunchPackage;
     private String mLaunchClass;
     private boolean mScanAllowed;
 
+    public DevicePickerFragment() {
+        super(null /* Not tied to any user restrictions. */);
+    }
+
     @Override
     void initPreferencesFromPreferenceScreen() {
         Intent intent = getActivity().getIntent();
@@ -60,6 +64,7 @@
                 BluetoothDevicePicker.FILTER_TYPE_ALL));
         mLaunchPackage = intent.getStringExtra(BluetoothDevicePicker.EXTRA_LAUNCH_PACKAGE);
         mLaunchClass = intent.getStringExtra(BluetoothDevicePicker.EXTRA_LAUNCH_CLASS);
+        mAvailableDevicesCategory = (BluetoothProgressCategory) findPreference(KEY_BT_DEVICE_LIST);
     }
 
     @Override
@@ -88,6 +93,7 @@
         mSelectedDevice = null;
         if (mScanAllowed) {
             enableScanning();
+            mAvailableDevicesCategory.setProgress(mLocalAdapter.isDiscovering());
         }
     }
 
@@ -123,6 +129,13 @@
         }
     }
 
+    @Override
+    public void onScanningStateChanged(boolean started) {
+        super.onScanningStateChanged(started);
+        started |= mScanEnabled;
+        mAvailableDevicesCategory.setProgress(started);
+    }
+
     public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice,
             int bondState) {
         BluetoothDevice device = cachedDevice.getDevice();
diff --git a/tests/robotests/src/com/android/settings/bluetooth/DevicePickerFragmentTest.java b/tests/robotests/src/com/android/settings/bluetooth/DevicePickerFragmentTest.java
new file mode 100644
index 0000000..3294ffd
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/bluetooth/DevicePickerFragmentTest.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import static org.mockito.Mockito.verify;
+
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DevicePickerFragmentTest {
+    @Mock
+    private LocalBluetoothAdapter mLocalAdapter;
+    @Mock
+    private BluetoothProgressCategory mAvailableDevicesCategory;
+    private DevicePickerFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mFragment = new DevicePickerFragment();
+
+        mFragment.mAvailableDevicesCategory = mAvailableDevicesCategory;
+    }
+
+    @Test
+    public void testScanningStateChanged_started_setProgressStarted() {
+        mFragment.mScanEnabled = true;
+
+        mFragment.onScanningStateChanged(true);
+
+        verify(mAvailableDevicesCategory).setProgress(true);
+    }
+}
