From f13fccfe1a020d721821a4132ff5cd676ddc269b Mon Sep 17 00:00:00 2001 From: Fabian Christoffel Date: Tue, 4 Jul 2023 15:35:37 +0200 Subject: [PATCH] fix: request for Bluetooth permissions on startup to fetch bonded devices --- .../example/sensortestingapp/MainActivity.kt | 48 +++++++++++++------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/example/sensortestingapp/MainActivity.kt b/app/src/main/java/com/example/sensortestingapp/MainActivity.kt index 9d5e523..aba5e63 100644 --- a/app/src/main/java/com/example/sensortestingapp/MainActivity.kt +++ b/app/src/main/java/com/example/sensortestingapp/MainActivity.kt @@ -64,6 +64,8 @@ class MainActivity : AppCompatActivity() { DeviceListAdapter(kirbyDevices) } + private var onPermissionsGrantedCallback: Runnable? = null + override fun onCreate(savedInstanceState: Bundle?) { WindowCompat.setDecorFitsSystemWindows(window, false) super.onCreate(savedInstanceState) @@ -77,12 +79,14 @@ class MainActivity : AppCompatActivity() { binding.fab.setOnClickListener { view -> if (!hasRequiredRuntimePermissions()) { + onPermissionsGrantedCallback = object : Runnable { + override fun run() { + toggleScanning() + } + } requestRelevantRuntimePermissions() - } - if (connectionManager.isScanning) { - connectionManager.stopScan() } else { - startBleScan() + toggleScanning() } } @@ -90,6 +94,14 @@ class MainActivity : AppCompatActivity() { } + private fun toggleScanning(): Unit { + if (connectionManager.isScanning) { + connectionManager.stopScan() + } else { + connectionManager.startScan() + } + } + private fun isKirbyDevice(device: BluetoothDevice): Boolean { return (device.name ?: "").lowercase().contains("kirby") } @@ -104,11 +116,25 @@ class MainActivity : AppCompatActivity() { animator.supportsChangeAnimations = false } + if (hasRequiredRuntimePermissions()) { + addBondedDevices() + } else { + onPermissionsGrantedCallback = object : Runnable { + override fun run() { + addBondedDevices() + } + } + requestRelevantRuntimePermissions() + } + + + //addDummyDevices() + } + + private fun addBondedDevices(): Unit { bluetoothAdapter.bondedDevices.filter { isKirbyDevice(it) }.forEach { newKirbyDevice(it) } - - //addDummyDevices() } @SuppressLint("NotifyDataSetChanged") @@ -163,14 +189,6 @@ class MainActivity : AppCompatActivity() { return device } - private fun startBleScan() { - if (!hasRequiredRuntimePermissions()) { - requestRelevantRuntimePermissions() - } else { - connectionManager.startScan() - } - } - override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate the menu; this adds items to the action bar if it is present. menuInflater.inflate(R.menu.menu_main, menu) @@ -231,7 +249,7 @@ class MainActivity : AppCompatActivity() { } allGranted && hasRequiredRuntimePermissions() -> { - startBleScan() + onPermissionsGrantedCallback?.run() } else -> {