From d210a2754d1f2c8146bb3aa611e5e6dc680a49fe Mon Sep 17 00:00:00 2001 From: Stefan Zollinger Date: Mon, 19 Aug 2024 14:39:23 +0200 Subject: [PATCH] feat: improve scanning stability & connect to freshly bonded devs --- .../com/logitech/vc/kirbytest/ConnectionManager.kt | 5 ++++- .../java/com/logitech/vc/kirbytest/MainActivity.kt | 12 +++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/logitech/vc/kirbytest/ConnectionManager.kt b/app/src/main/java/com/logitech/vc/kirbytest/ConnectionManager.kt index f6eb816..9332504 100644 --- a/app/src/main/java/com/logitech/vc/kirbytest/ConnectionManager.kt +++ b/app/src/main/java/com/logitech/vc/kirbytest/ConnectionManager.kt @@ -18,6 +18,7 @@ import android.bluetooth.le.ScanCallback import android.bluetooth.le.ScanFilter import android.bluetooth.le.ScanResult import android.bluetooth.le.ScanSettings +import android.bluetooth.le.ScanSettings.MATCH_NUM_ONE_ADVERTISEMENT import android.content.BroadcastReceiver import android.content.Context import android.content.Intent @@ -210,6 +211,7 @@ class ConnectionManager(val context: Context, bleAdapter: BluetoothAdapter) { private val scanSettings = ScanSettings.Builder() .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) + .setNumOfMatches(ScanSettings.MATCH_NUM_ONE_ADVERTISEMENT) .build() private val bleScanner by lazy { @@ -308,7 +310,8 @@ class ConnectionManager(val context: Context, bleAdapter: BluetoothAdapter) { fun startScan() { if (!isScanning) { isScanning = true - bleScanner.startScan( null, scanSettings, scanCallback) + val filter = ScanFilter.Builder().setDeviceName("KIRBY").build() + bleScanner.startScan(listOf(filter), scanSettings, scanCallback) } } diff --git a/app/src/main/java/com/logitech/vc/kirbytest/MainActivity.kt b/app/src/main/java/com/logitech/vc/kirbytest/MainActivity.kt index f84c808..18d0591 100644 --- a/app/src/main/java/com/logitech/vc/kirbytest/MainActivity.kt +++ b/app/src/main/java/com/logitech/vc/kirbytest/MainActivity.kt @@ -21,6 +21,7 @@ import android.view.Menu import android.view.MenuItem import android.view.View.INVISIBLE import android.view.View.VISIBLE +import android.view.WindowManager import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts.CreateDocument @@ -160,6 +161,10 @@ class MainActivity : AppCompatActivity() { lifecycleScope.launch { settings.loadSettings() + + if(settings.getSettings().lowPowerMode) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } } } @@ -202,6 +207,7 @@ class MainActivity : AppCompatActivity() { } private fun addBondedDevices(): Unit { + bondedDevices.clear() bluetoothAdapter.bondedDevices.filter { isKirbyDevice(it) }.forEach { bondedDevices.add(it.address) newKirbyDevice(it) @@ -235,11 +241,7 @@ class MainActivity : AppCompatActivity() { kirbyDevice.onScanResult(callbackType, result) } - if (bondedDevices.contains(result.device.address)) { - Log.i("KirbyDevice", "Auto connecting to bonded device" + result.device.address) - kirbyDevice.connect() - } - + kirbyDevice.connect() } } })