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

This commit is contained in:
TreeHugger Robot
2020-02-05 06:20:56 +00:00
committed by Android (Google) Code Review
3 changed files with 35 additions and 2 deletions

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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();