【问题标题】:Difference in ble scan rate in Android vs iOSAndroid与iOS中ble扫描率的差异
【发布时间】:2019-06-09 15:11:23
【问题描述】:

我的问题是 iOS 和各种 android 手机从特定的 ibeacon 接收到 BLE 广告数据包的数量,例如在 5 分钟内从特定的信标 iOS 接收到大约 904 个广告数据包,而 android 手机接收到大约 230 到 480 之间,具体取决于手机.

有没有人知道有没有设置可以设置BLE模块的扫描率?如果不是,还有什么可能导致此问题?

我在 iOS 中使用“CBCentralManager”来利用 BLE 模块,在 Android 中使用“blutoothLeScanner”。

//Creating an instance of CBCentralManager
private let bluetoothManager = CBCentralManager(delegate: nil, queue: nil)

//Start Scanning
bluetoothManager.scanForPeripherals(withServices: nil, options: [CBCentralManagerScanOptionAllowDuplicatesKey:NSNumber(value: true)])

【问题讨论】:

  • 您的计数是基于在前台还是后台运行的应用程序?
  • 我的应用在前台运行。
  • 你能在iOS上显示你的扫描码吗?根据我的经验,iOS 上的检测应该不会比 Android 少得多,所以我怀疑你的设置中的某些东西正在影响 iOS。
  • 我已经编辑了问题并添加了代码。
  • 对不起,我误读了这个问题。我现在看到您在 iOS 上检测到 更多 个广告而不是 Android,这并不让我感到惊讶。

标签: android ios bluetooth-lowenergy ibeacon rssi


【解决方案1】:

扫描参数在两个操作系统中都是硬编码的,但在 Android 上,您可以选择以下三种模式:

  1. https://developer.android.com/reference/android/bluetooth/le/ScanSettings.html#SCAN_MODE_BALANCED
  2. https://developer.android.com/reference/android/bluetooth/le/ScanSettings.html#SCAN_MODE_LOW_LATENCY
  3. https://developer.android.com/reference/android/bluetooth/le/ScanSettings.html#SCAN_MODE_LOW_POWER

请注意,如果您在后台扫描,无论您选择什么,都将使用 SCAN_MODE_LOW_POWER。

【讨论】:

    【解决方案2】:

    Android 设备型号之间存在大量差异(通常称为碎片),这同样适用于蓝牙 LE 行为。 Android 手机之间的差异比扫描率更可能解释您看到的差异,扫描率在我见过的所有 Android 设备上默认为 100% 占空比 (LOW LATENCY),并且与 iOS 类似。

    在相同条件下,一些 Android 设备在 iPhone 中扫描相似数量的 BLE 广告(例如 Pixel 和更高版本的 Nexus 5+ 设备)。但并非所有 Android 设备都能提供同样好的结果。

    您没有具体说明您测试的哪些 Android 型号的广告检测次数较少,但有很多因素可能会导致这种情况:

    1. 某些较旧的 Android 设备,例如 Nexus 4、Nexus 7 和 Moto G(第 1 代),每次扫描每个唯一的蓝牙设备时只会检测广告。需要重新启动扫描以检测来自该设备的第二个数据包。您可以尝试每隔一秒左右重新启动一次 BLE 扫描,看看是否有帮助。

    2. 一些 Android 设备(如华为 P9)的 BLE 天线性能非常差,因此它们很少能够在 10 米以上检测到 BLE 设备,而 iPhone 通常检测到 40-50 米或更远。您可以通过查看接收到的数据包的信号级别(RSSI 值)来查看这是否是您的问题的原因。 Android 设备上的 RSSI 值是否始终比 iOS 更弱(更负)?如果是这样,那么这就解释了差异。

    【讨论】:

      【解决方案3】:

      我知道某些手机有相同的行为。

      请注意,您的外围设备可能会在 3 个 BLE 通道上做广告。 (?) 您的 Android 设备可能只收听一个频道。

      此外,在某些情况下甚至更糟糕的是,您的手机可能一次在一个频道上收听,一段时间后在另一个频道上收听,因此,也会进行频道跳跃以进行扫描。您可能会获得混叠效果并且只看到几次广告。这就是为什么Apple Accessory Guide 建议外设一定的广告间隔。 (第 23.5 章)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-18
        • 1970-01-01
        • 2013-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        相关资源
        最近更新 更多