Listed order on "previously connected" depend on recently connected devices

This CL use Bluetooth api "getMostRecentlyConnectedDevices()" to get
recently connected devices list. Let "previously connected" will list
most recently connected device on the top.

Bug: 130984590
Test: make -j42 RunSettingsRoboTests
Change-Id: I8d425b6da6cb9fe9fd1417937b4cb9a052cd1660
This commit is contained in:
hughchen
2020-02-03 13:59:06 +08:00
parent 07c1cdb77e
commit 043e43f059
3 changed files with 35 additions and 2 deletions

View File

@@ -15,6 +15,7 @@
*/
package com.android.settings.bluetooth;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.util.Log;
@@ -24,6 +25,7 @@ import androidx.preference.Preference;
import com.android.settings.connecteddevice.DevicePreferenceCallback;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
/**
* Maintain and update saved bluetooth devices(bonded but not connected)
@@ -41,6 +43,26 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater
super(context, fragment, devicePreferenceCallback);
}
@Override
public void forceUpdate() {
if (BluetoothAdapter.getDefaultAdapter().isEnabled()) {
final CachedBluetoothDeviceManager cachedManager =
mLocalManager.getCachedDeviceManager();
for (BluetoothDevice device
: BluetoothAdapter.getDefaultAdapter().getMostRecentlyConnectedDevices()) {
final CachedBluetoothDevice cachedDevice = cachedManager.findDevice(device);
if (isFilterMatched(cachedDevice)) {
// Add the preference if it is new one
addPreference(cachedDevice, BluetoothDevicePreference.SortType.TYPE_NO_SORT);
} else {
removePreference(cachedDevice);
}
}
} else {
removeAllDevicesFromPreference();
}
}
@Override
public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
final BluetoothDevice device = cachedDevice.getDevice();