From d538c2afff7a48dc2ddb172769ebfff610629125 Mon Sep 17 00:00:00 2001 From: Andre K Date: Sat, 10 Dec 2022 00:16:14 -0300 Subject: [PATCH] list devices from adapter.bondedDevices (#536) --- .../com/geeksville/mesh/model/BTScanModel.kt | 20 ++++++++----------- .../bluetooth/BluetoothRepository.kt | 7 +++++++ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/model/BTScanModel.kt b/app/src/main/java/com/geeksville/mesh/model/BTScanModel.kt index b10a9af59..d658adc22 100644 --- a/app/src/main/java/com/geeksville/mesh/model/BTScanModel.kt +++ b/app/src/main/java/com/geeksville/mesh/model/BTScanModel.kt @@ -251,8 +251,8 @@ class BTScanModel @Inject constructor( // Include a placeholder for "None" addDevice(DeviceListEntry(context.getString(R.string.none), "n", true)) - // Include CompanionDeviceManager valid associations - addDeviceAssociations() + // Include paired Bluetooth devices + addBluetoothDevices() // Include Network Service Discovery nsdRepository.resolvedList?.forEach { service -> @@ -324,17 +324,13 @@ class BTScanModel @Inject constructor( } } - @SuppressLint("NewApi") - fun addDeviceAssociations() { - if (hasCompanionDeviceApi) deviceManager?.associations?.forEach { bleAddress -> - val bleDevice = getDeviceListEntry("x$bleAddress", true) - // Disassociate after pairing is removed (if BLE is disabled, assume bonded) - if (!bleDevice.bonded) { - debug("Forgetting old BLE association ${bleAddress.anonymize}") - deviceManager?.disassociate(bleAddress) + @SuppressLint("MissingPermission") + private fun addBluetoothDevices() { + bluetoothRepository.getBondedDevices() + ?.filter { it.name.matches(Regex("^\\S+\$")) } + ?.forEach { + addDevice(DeviceListEntry(it.name, "x${it.address}", true)) } - addDevice(bleDevice) - } } private val _spinner = MutableLiveData(false) diff --git a/app/src/main/java/com/geeksville/mesh/repository/bluetooth/BluetoothRepository.kt b/app/src/main/java/com/geeksville/mesh/repository/bluetooth/BluetoothRepository.kt index 0a91fb5c7..6d86f6a7a 100644 --- a/app/src/main/java/com/geeksville/mesh/repository/bluetooth/BluetoothRepository.kt +++ b/app/src/main/java/com/geeksville/mesh/repository/bluetooth/BluetoothRepository.kt @@ -65,6 +65,13 @@ class BluetoothRepository @Inject constructor( return bluetoothAdapterLazy.get()?.bluetoothLeScanner } + @SuppressLint("MissingPermission") + fun getBondedDevices(): Set? { + return bluetoothAdapterLazy.get() + ?.takeIf { application.hasBluetoothPermission() } + ?.bondedDevices + } + @SuppressLint("MissingPermission") internal suspend fun updateBluetoothState() { val newState: BluetoothState = bluetoothAdapterLazy.get()?.takeIf {