Merge "Refactor for better readability of using different Bluetooth scanning" into main
This commit is contained in:
@@ -55,7 +55,12 @@ import kotlinx.coroutines.withContext
|
|||||||
abstract class DeviceListPreferenceFragment(restrictedKey: String?) :
|
abstract class DeviceListPreferenceFragment(restrictedKey: String?) :
|
||||||
RestrictedDashboardFragment(restrictedKey), BluetoothCallback {
|
RestrictedDashboardFragment(restrictedKey), BluetoothCallback {
|
||||||
|
|
||||||
private var filter: BluetoothDeviceFilter.Filter? = BluetoothDeviceFilter.ALL_FILTER
|
enum class ScanType {
|
||||||
|
CLASSIC, LE
|
||||||
|
}
|
||||||
|
|
||||||
|
private var scanType = ScanType.CLASSIC
|
||||||
|
private var filter: BluetoothDeviceFilter.Filter = BluetoothDeviceFilter.ALL_FILTER
|
||||||
private var leScanFilters: List<ScanFilter>? = null
|
private var leScanFilters: List<ScanFilter>? = null
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
@@ -91,7 +96,8 @@ abstract class DeviceListPreferenceFragment(restrictedKey: String?) :
|
|||||||
private var showDevicesWithoutNames = false
|
private var showDevicesWithoutNames = false
|
||||||
|
|
||||||
protected fun setFilter(filterType: Int) {
|
protected fun setFilter(filterType: Int) {
|
||||||
filter = BluetoothDeviceFilter.getFilter(filterType)
|
this.scanType = ScanType.CLASSIC
|
||||||
|
this.filter = BluetoothDeviceFilter.getFilter(filterType)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -101,7 +107,7 @@ abstract class DeviceListPreferenceFragment(restrictedKey: String?) :
|
|||||||
* @param leScanFilters list of settings to filter scan result
|
* @param leScanFilters list of settings to filter scan result
|
||||||
*/
|
*/
|
||||||
fun setFilter(leScanFilters: List<ScanFilter>?) {
|
fun setFilter(leScanFilters: List<ScanFilter>?) {
|
||||||
filter = null
|
this.scanType = ScanType.LE
|
||||||
this.leScanFilters = leScanFilters
|
this.leScanFilters = leScanFilters
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,11 +197,14 @@ abstract class DeviceListPreferenceFragment(restrictedKey: String?) :
|
|||||||
|
|
||||||
private suspend fun addDevice(cachedDevice: CachedBluetoothDevice) =
|
private suspend fun addDevice(cachedDevice: CachedBluetoothDevice) =
|
||||||
withContext(Dispatchers.Default) {
|
withContext(Dispatchers.Default) {
|
||||||
// TODO(b/289189853): Replace checking if `filter` is null or not to decide which type
|
if (mBluetoothAdapter!!.state != BluetoothAdapter.STATE_ON) {
|
||||||
// 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
|
// Prevent updates while the list shows one of the state messages
|
||||||
if (mBluetoothAdapter!!.state == BluetoothAdapter.STATE_ON && filterMatched) {
|
return@withContext
|
||||||
|
}
|
||||||
|
// LE filters was already applied at scan time. We just need to check if the classic
|
||||||
|
// filter matches
|
||||||
|
if (scanType == ScanType.LE
|
||||||
|
|| (scanType == ScanType.CLASSIC && filter.matches(cachedDevice.device) == true)) {
|
||||||
createDevicePreference(cachedDevice)
|
createDevicePreference(cachedDevice)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -277,19 +286,19 @@ abstract class DeviceListPreferenceFragment(restrictedKey: String?) :
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
open fun startScanning() {
|
open fun startScanning() {
|
||||||
if (filter != null) {
|
if (scanType == ScanType.LE) {
|
||||||
startClassicScanning()
|
|
||||||
} else if (leScanFilters != null) {
|
|
||||||
startLeScanning()
|
startLeScanning()
|
||||||
|
} else {
|
||||||
|
startClassicScanning()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
open fun stopScanning() {
|
open fun stopScanning() {
|
||||||
if (filter != null) {
|
if (scanType == ScanType.LE) {
|
||||||
stopClassicScanning()
|
|
||||||
} else if (leScanFilters != null) {
|
|
||||||
stopLeScanning()
|
stopLeScanning()
|
||||||
|
} else {
|
||||||
|
stopClassicScanning()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user