From f754a19c9558e75e52d998cb28547f096361d88f Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Sat, 12 Dec 2020 11:09:17 +0800 Subject: [PATCH] bug #206 - also add reportException to make non fatal and report bug via analytics (in case my theory is wrong) --- .../mesh/service/RadioInterfaceService.kt | 5 ++- .../geeksville/mesh/ui/SettingsFragment.kt | 44 ++++++++++--------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt b/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt index 13663d047..ece6f66e4 100644 --- a/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt @@ -76,7 +76,10 @@ class RadioInterfaceService : Service(), Logging { var address = prefs.getString(DEVADDR_KEY, null) if (address == null) { /// Check for the old preferences name we used to use - val rest = prefs.getString(DEVADDR_KEY_OLD, null) + var rest = prefs.getString(DEVADDR_KEY_OLD, null) + if(rest == "null") + rest = null + if (rest != null) address = "x$rest" // Add the bluetooth prefix } diff --git a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt index 889792f5b..936dfff5f 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt @@ -113,7 +113,7 @@ class BTScanModel(app: Application) : AndroidViewModel(app), Logging { open class DeviceListEntry(val name: String, val address: String, val bonded: Boolean) { val bluetoothAddress get() = - if (address[0] == 'x') + if (isBluetooth) address.substring(1) else null @@ -367,27 +367,30 @@ class BTScanModel(app: Application) : AndroidViewModel(app), Logging { // Handle requestng USB or bluetooth permissions for the device debug("Requesting permissions for the device") - if (it.isBluetooth) { - // Request bonding for bluetooth - // We ignore missing BT adapters, because it lets us run on the emulator - bluetoothAdapter - ?.getRemoteDevice(it.bluetoothAddress)?.let { device -> - requestBonding(activity, device) { state -> - if (state == BOND_BONDED) { - errorText.value = activity.getString(R.string.pairing_completed) - changeScanSelection( - activity, - it.address - ) - } else { - errorText.value = - activity.getString(R.string.pairing_failed_try_again) - } + exceptionReporter { + val bleAddress = it.bluetoothAddress + if (bleAddress != null) { + // Request bonding for bluetooth + // We ignore missing BT adapters, because it lets us run on the emulator + bluetoothAdapter + ?.getRemoteDevice(bleAddress)?.let { device -> + requestBonding(activity, device) { state -> + if (state == BOND_BONDED) { + errorText.value = activity.getString(R.string.pairing_completed) + changeScanSelection( + activity, + it.address + ) + } else { + errorText.value = + activity.getString(R.string.pairing_failed_try_again) + } - // Force the GUI to redraw - devices.value = devices.value + // Force the GUI to redraw + devices.value = devices.value + } } - } + } } if (it.isSerial) { @@ -453,6 +456,7 @@ class BTScanModel(app: Application) : AndroidViewModel(app), Logging { class SettingsFragment : ScreenFragment("Settings"), Logging { private var _binding: SettingsFragmentBinding? = null + // This property is only valid between onCreateView and onDestroyView. private val binding get() = _binding!!