检测 BLE 在 30 秒内扫描超过 5 次

问题描述

This article 表示 android BLE 每 30 秒只能扫描 5 次。第 6 次失败。我的问题是我无法获取这个问题。好像也没有什么异常什么的。

调用 onScanFailed 时出现此错误。好像很安静。

   private val scanCallback = object: ScanCallback() {
        override fun onScanFailed(errorCode: Int) {
            super.onScanFailed(errorCode)
            // not called 
        }
    }

我尝试注册 ACTION_disCOVERY_STARTED 但只有在您使用 BLEAdapter.getInstance().startdiscovery() 时才会调用此操作,并且此命令适用于经典蓝牙。我使用 BLE 扫描。

以下属性也是如此:BLEAdapter.getInstance().isdiscovering 这只能是 true,当您使用 startdiscovery

有人知道我如何知道扫描是否失败,因为这是 30 秒内的第 6 次吗?

解决方法

不幸的是,当您达到限制时,API 不会报告。您需要跟踪自己扫描的频率和时间。

否则看起来扫描正在进行中,但实际上并非如此。

然而,当达到限制时,您会在 logcat 日志中看到。