Merge "Show connecting hearing devices in A11y hearing devices page" into udc-qpr-dev
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater;
|
||||
@@ -37,11 +36,9 @@ public class AvailableHearingDeviceUpdater extends AvailableMediaBluetoothDevice
|
||||
|
||||
@Override
|
||||
public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
|
||||
final BluetoothDevice device = cachedDevice.getDevice();
|
||||
final boolean isConnectedHearingAidDevice = (cachedDevice.isConnectedHearingAidDevice()
|
||||
&& (device.getBondState() == BluetoothDevice.BOND_BONDED));
|
||||
|
||||
return isConnectedHearingAidDevice && isDeviceInCachedDevicesList(cachedDevice);
|
||||
return cachedDevice.isHearingAidDevice()
|
||||
&& isDeviceConnected(cachedDevice)
|
||||
&& isDeviceInCachedDevicesList(cachedDevice);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -191,10 +191,11 @@ abstract class DeviceListPreferenceFragment(restrictedKey: String?) :
|
||||
|
||||
private suspend fun addDevice(cachedDevice: CachedBluetoothDevice) =
|
||||
withContext(Dispatchers.Default) {
|
||||
// TODO(b/289189853): Replace checking if `filter` is null or not to decide which type
|
||||
// of Bluetooth scanning method will be used
|
||||
val filterMatched = filter == null || filter!!.matches(cachedDevice.device) == true
|
||||
// Prevent updates while the list shows one of the state messages
|
||||
if (mBluetoothAdapter!!.state == BluetoothAdapter.STATE_ON &&
|
||||
filter?.matches(cachedDevice.device) == true
|
||||
) {
|
||||
if (mBluetoothAdapter!!.state == BluetoothAdapter.STATE_ON && filterMatched) {
|
||||
createDevicePreference(cachedDevice)
|
||||
}
|
||||
}
|
||||
@@ -304,17 +305,14 @@ abstract class DeviceListPreferenceFragment(restrictedKey: String?) :
|
||||
}
|
||||
}
|
||||
|
||||
private val scanCallback = object : ScanCallback() {
|
||||
private val leScanCallback = object : ScanCallback() {
|
||||
override fun onScanResult(callbackType: Int, result: ScanResult) {
|
||||
lifecycleScope?.launch {
|
||||
withContext(Dispatchers.Default) {
|
||||
if (mBluetoothAdapter!!.state == BluetoothAdapter.STATE_ON) {
|
||||
val device = result.device
|
||||
val cachedDevice = mCachedDeviceManager!!.findDevice(device)
|
||||
?: mCachedDeviceManager!!.addDevice(device)
|
||||
createDevicePreference(cachedDevice)
|
||||
}
|
||||
}
|
||||
handleLeScanResult(result)
|
||||
}
|
||||
|
||||
override fun onBatchScanResults(results: MutableList<ScanResult>?) {
|
||||
for (result in results.orEmpty()) {
|
||||
handleLeScanResult(result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -328,12 +326,23 @@ abstract class DeviceListPreferenceFragment(restrictedKey: String?) :
|
||||
val settings = ScanSettings.Builder()
|
||||
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
|
||||
.build()
|
||||
scanner.startScan(leScanFilters, settings, scanCallback)
|
||||
scanner.startScan(leScanFilters, settings, leScanCallback)
|
||||
}
|
||||
|
||||
private fun stopLeScanning() {
|
||||
val scanner = mBluetoothAdapter!!.bluetoothLeScanner
|
||||
scanner?.stopScan(scanCallback)
|
||||
scanner?.stopScan(leScanCallback)
|
||||
}
|
||||
|
||||
private fun handleLeScanResult(result: ScanResult) {
|
||||
lifecycleScope?.launch {
|
||||
withContext(Dispatchers.Default) {
|
||||
val device = result.device
|
||||
val cachedDevice = mCachedDeviceManager!!.findDevice(device)
|
||||
?: mCachedDeviceManager!!.addDevice(device, leScanFilters)
|
||||
addDevice(cachedDevice)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@@ -18,7 +18,6 @@ package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
@@ -80,8 +79,9 @@ public class AvailableHearingDeviceUpdaterTest {
|
||||
@Test
|
||||
public void isFilterMatch_connectedHearingDevice_returnTrue() {
|
||||
CachedBluetoothDevice connectedHearingDevice = mCachedBluetoothDevice;
|
||||
when(connectedHearingDevice.isConnectedHearingAidDevice()).thenReturn(true);
|
||||
doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState();
|
||||
when(connectedHearingDevice.isHearingAidDevice()).thenReturn(true);
|
||||
when(mBluetoothDevice.isConnected()).thenReturn(true);
|
||||
when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
|
||||
when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
|
||||
new ArrayList<>(List.of(connectedHearingDevice)));
|
||||
|
||||
@@ -91,8 +91,9 @@ public class AvailableHearingDeviceUpdaterTest {
|
||||
@Test
|
||||
public void isFilterMatch_nonConnectedHearingDevice_returnFalse() {
|
||||
CachedBluetoothDevice nonConnectedHearingDevice = mCachedBluetoothDevice;
|
||||
when(nonConnectedHearingDevice.isConnectedHearingAidDevice()).thenReturn(false);
|
||||
doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState();
|
||||
when(nonConnectedHearingDevice.isHearingAidDevice()).thenReturn(true);
|
||||
when(mBluetoothDevice.isConnected()).thenReturn(false);
|
||||
when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
|
||||
when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
|
||||
new ArrayList<>(List.of(nonConnectedHearingDevice)));
|
||||
|
||||
@@ -103,7 +104,8 @@ public class AvailableHearingDeviceUpdaterTest {
|
||||
public void isFilterMatch_connectedBondingHearingDevice_returnFalse() {
|
||||
CachedBluetoothDevice connectedBondingHearingDevice = mCachedBluetoothDevice;
|
||||
when(connectedBondingHearingDevice.isHearingAidDevice()).thenReturn(true);
|
||||
doReturn(BluetoothDevice.BOND_BONDING).when(mBluetoothDevice).getBondState();
|
||||
when(mBluetoothDevice.isConnected()).thenReturn(true);
|
||||
when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDING);
|
||||
when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
|
||||
new ArrayList<>(List.of(connectedBondingHearingDevice)));
|
||||
|
||||
@@ -114,8 +116,8 @@ public class AvailableHearingDeviceUpdaterTest {
|
||||
public void isFilterMatch_hearingDeviceNotInCachedDevicesList_returnFalse() {
|
||||
CachedBluetoothDevice notInCachedDevicesListDevice = mCachedBluetoothDevice;
|
||||
when(notInCachedDevicesListDevice.isHearingAidDevice()).thenReturn(true);
|
||||
doReturn(BluetoothDevice.BOND_BONDED).when(mBluetoothDevice).getBondState();
|
||||
doReturn(false).when(mBluetoothDevice).isConnected();
|
||||
when(mBluetoothDevice.isConnected()).thenReturn(true);
|
||||
when(mBluetoothDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
|
||||
when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(new ArrayList<>());
|
||||
|
||||
assertThat(mUpdater.isFilterMatched(notInCachedDevicesListDevice)).isEqualTo(false);
|
||||
|
Reference in New Issue
Block a user