feat: improve scanning stability & connect to freshly bonded devs
This commit is contained in:
@@ -18,6 +18,7 @@ import android.bluetooth.le.ScanCallback
|
|||||||
import android.bluetooth.le.ScanFilter
|
import android.bluetooth.le.ScanFilter
|
||||||
import android.bluetooth.le.ScanResult
|
import android.bluetooth.le.ScanResult
|
||||||
import android.bluetooth.le.ScanSettings
|
import android.bluetooth.le.ScanSettings
|
||||||
|
import android.bluetooth.le.ScanSettings.MATCH_NUM_ONE_ADVERTISEMENT
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@@ -210,6 +211,7 @@ class ConnectionManager(val context: Context, bleAdapter: BluetoothAdapter) {
|
|||||||
|
|
||||||
private val scanSettings = ScanSettings.Builder()
|
private val scanSettings = ScanSettings.Builder()
|
||||||
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
|
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
|
||||||
|
.setNumOfMatches(ScanSettings.MATCH_NUM_ONE_ADVERTISEMENT)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
private val bleScanner by lazy {
|
private val bleScanner by lazy {
|
||||||
@@ -308,7 +310,8 @@ class ConnectionManager(val context: Context, bleAdapter: BluetoothAdapter) {
|
|||||||
fun startScan() {
|
fun startScan() {
|
||||||
if (!isScanning) {
|
if (!isScanning) {
|
||||||
isScanning = true
|
isScanning = true
|
||||||
bleScanner.startScan( null, scanSettings, scanCallback)
|
val filter = ScanFilter.Builder().setDeviceName("KIRBY").build()
|
||||||
|
bleScanner.startScan(listOf(filter), scanSettings, scanCallback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import android.view.Menu
|
|||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View.INVISIBLE
|
import android.view.View.INVISIBLE
|
||||||
import android.view.View.VISIBLE
|
import android.view.View.VISIBLE
|
||||||
|
import android.view.WindowManager
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
|
import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
|
||||||
@@ -160,6 +161,10 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
settings.loadSettings()
|
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 {
|
private fun addBondedDevices(): Unit {
|
||||||
|
bondedDevices.clear()
|
||||||
bluetoothAdapter.bondedDevices.filter { isKirbyDevice(it) }.forEach {
|
bluetoothAdapter.bondedDevices.filter { isKirbyDevice(it) }.forEach {
|
||||||
bondedDevices.add(it.address)
|
bondedDevices.add(it.address)
|
||||||
newKirbyDevice(it)
|
newKirbyDevice(it)
|
||||||
@@ -235,12 +241,8 @@ class MainActivity : AppCompatActivity() {
|
|||||||
kirbyDevice.onScanResult(callbackType, result)
|
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()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return mngr
|
return mngr
|
||||||
|
|||||||
Reference in New Issue
Block a user