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:
@@ -60,10 +60,12 @@ public final class BluetoothDevicePreference extends GearPreference implements
|
|||||||
|
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
@IntDef({SortType.TYPE_DEFAULT,
|
@IntDef({SortType.TYPE_DEFAULT,
|
||||||
SortType.TYPE_FIFO})
|
SortType.TYPE_FIFO,
|
||||||
|
SortType.TYPE_NO_SORT})
|
||||||
public @interface SortType {
|
public @interface SortType {
|
||||||
int TYPE_DEFAULT = 1;
|
int TYPE_DEFAULT = 1;
|
||||||
int TYPE_FIFO = 2;
|
int TYPE_FIFO = 2;
|
||||||
|
int TYPE_NO_SORT = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final CachedBluetoothDevice mCachedDevice;
|
private final CachedBluetoothDevice mCachedDevice;
|
||||||
|
@@ -232,12 +232,21 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
|
|||||||
* Add the {@link Preference} that represents the {@code cachedDevice}
|
* Add the {@link Preference} that represents the {@code cachedDevice}
|
||||||
*/
|
*/
|
||||||
protected void addPreference(CachedBluetoothDevice cachedDevice) {
|
protected void addPreference(CachedBluetoothDevice cachedDevice) {
|
||||||
|
addPreference(cachedDevice, BluetoothDevicePreference.SortType.TYPE_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the {@link Preference} with {@link BluetoothDevicePreference.SortType} that
|
||||||
|
* represents the {@code cachedDevice}
|
||||||
|
*/
|
||||||
|
protected void addPreference(CachedBluetoothDevice cachedDevice,
|
||||||
|
@BluetoothDevicePreference.SortType int type) {
|
||||||
final BluetoothDevice device = cachedDevice.getDevice();
|
final BluetoothDevice device = cachedDevice.getDevice();
|
||||||
if (!mPreferenceMap.containsKey(device)) {
|
if (!mPreferenceMap.containsKey(device)) {
|
||||||
BluetoothDevicePreference btPreference =
|
BluetoothDevicePreference btPreference =
|
||||||
new BluetoothDevicePreference(mPrefContext, cachedDevice,
|
new BluetoothDevicePreference(mPrefContext, cachedDevice,
|
||||||
true /* showDeviceWithoutNames */,
|
true /* showDeviceWithoutNames */,
|
||||||
BluetoothDevicePreference.SortType.TYPE_DEFAULT);
|
type);
|
||||||
btPreference.setKey(getPreferenceKey());
|
btPreference.setKey(getPreferenceKey());
|
||||||
btPreference.setOnGearClickListener(mDeviceProfilesListener);
|
btPreference.setOnGearClickListener(mDeviceProfilesListener);
|
||||||
if (this instanceof Preference.OnPreferenceClickListener) {
|
if (this instanceof Preference.OnPreferenceClickListener) {
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.bluetooth;
|
package com.android.settings.bluetooth;
|
||||||
|
|
||||||
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.bluetooth.BluetoothDevice;
|
import android.bluetooth.BluetoothDevice;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -24,6 +25,7 @@ import androidx.preference.Preference;
|
|||||||
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
|
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maintain and update saved bluetooth devices(bonded but not connected)
|
* Maintain and update saved bluetooth devices(bonded but not connected)
|
||||||
@@ -41,6 +43,26 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater
|
|||||||
super(context, fragment, devicePreferenceCallback);
|
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
|
@Override
|
||||||
public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
|
public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
|
||||||
final BluetoothDevice device = cachedDevice.getDevice();
|
final BluetoothDevice device = cachedDevice.getDevice();
|
||||||
|
Reference in New Issue
Block a user