首页 > 解决方案 > ScanCallback:检查是否在某个时间间隔内没有找到设备

问题描述

我构建了一个应用程序,该应用程序不断检查 BLE 设备,并在 onScanResult 上使用新发现的设备更新列表。

如果在某个时间间隔内没有找到设备,我想删除列表中的设备。如果是这种情况,是否有一种优雅的方式来获得回调(我试图避免一些讨厌的解决方法)?在developer.android.com上的文档中,我没有找到类似的东西。方法:

    private val leScanCallback: ScanCallback = object : ScanCallback() {
    override fun onScanResult(callbackType: Int, result: ScanResult) {
        super.onScanResult(callbackType, result)
        val device = result.device
        Log.d("LeDeviceScanner", "Device found: ${device.address} - ${device.name ?: "Unknown"}")
        onDeviceResult(result.device)
    }
}

据我所知,其他回调是:onScanFailedonBatchScanResults,这些都对我没有帮助。

标签: kotlinbluetooth-lowenergy

解决方案


我会回答我自己的问题,希望对某人有所帮助。没有找到设备的简单回调。因此,必须找到解决方法。在我的情况下,我将找到的设备存储在一个列表中,如果在一分钟的搜索中没有再次找到它,我想删除该设备。每次找到设备时,我都会使用我传回的时间戳来做到这一点。没有那么优雅,但它确实有效。


推荐阅读