Android BLE扫描模式设置间隔

Posted

技术标签:

【中文标题】Android BLE扫描模式设置间隔【英文标题】:Android BLE scan mode setting interval 【发布时间】:2018-02-08 12:58:09 【问题描述】:

我正在编写一个小型测试应用程序来评估蓝牙模块。

应用当前正在使用积极匹配模式和低延迟扫描模式进行扫描。我们已经控制了蓝牙模块的广告间隔,并且正在尝试评估需要多少广告才能触发android中的回调。

有人知道与低延迟、平衡和低功耗扫描模式设置相关的 android BLE 扫描的间隔和窗口吗?

我发现了这个 (How to set BLE scan interval and windows no just choose mode in android?) SO 问题,但是如果我在我的 android 设备开始扫描后 5000 毫秒启动我的蓝牙设备广告,它会在 3000 毫秒内找到。 (表示5000ms间隔,5000ms窗口不正确?)

【问题讨论】:

【参考方案1】:

它们没有记录。

如果您在“与常规扫描设置相对应的扫描参数”下搜索,您可以在https://android.googlesource.com/platform/packages/apps/Bluetooth/+/master/src/com/android/bluetooth/gatt/ScanManager.java 看到来源。您需要查看历史记录,了解不同 Android 版本之间的值是如何变化的。

本文发布时的当前值如下:

    /**
     * Scan params corresponding to regular scan setting
     */
    private static final int SCAN_MODE_LOW_POWER_WINDOW_MS = 512;
    private static final int SCAN_MODE_LOW_POWER_INTERVAL_MS = 5120;
    private static final int SCAN_MODE_BALANCED_WINDOW_MS = 1024;
    private static final int SCAN_MODE_BALANCED_INTERVAL_MS = 4096;
    private static final int SCAN_MODE_LOW_LATENCY_WINDOW_MS = 4096;
    private static final int SCAN_MODE_LOW_LATENCY_INTERVAL_MS = 4096;

您还可以获取 hci snoop 日志并查看它告诉控制器使用哪些扫描参数。请注意,根据规范,这些参数只是一个建议。控制器可能会根据其他并发无线电活动使用不同的值。

【讨论】:

以上是关于Android BLE扫描模式设置间隔的主要内容,如果未能解决你的问题,请参考以下文章

检测Android App收到扫描请求时是不是发送BLE扫描响应

Cordova:在后台模式下扫描 iBeacons / BLE(iOS 和 Android)

在 iOS 后台实现 BLE 扫描

BLE 5 外围设备未在支持 BLE 5 的 Android 手机和 iPhone 上得到扫描

Android 6.0 扫描不到 Ble 设备需开启位置权限

由于位置许可,BLE 蓝牙扫描无法在 Android 10 和 11 上运行