startLeScan 返回 false

Raj*_*edi 0 android bluetooth-lowenergy android-bluetooth ibeacon-android

在扫描 BLE 设备期间,BluetoothAdapter 的方法 startLeScan 有时会返回 false。因此,我在我的应用程序中遇到了问题。我从 Lollipop 开始使用较新的方法 startScan(ScanCallback callback),但需要支持 API 级别 18 及以上。感谢任何帮助。

dav*_*ung 5

如果您查看startLeScan 此处的源代码,您会发现有几种情况会导致返回码为 false:

  1. 已提供空回调
  2. 客户端已经使用相同的回调启动了扫描
  3. 该设备不支持蓝牙 LE
  4. 内部RemoteException发生。
  5. 内部调用android.bluetooth.IBluetoothGatt registerClient失败。

由于这有时会起作用,因此问题可能不是 1 或 3。您可以通过查看发生这种情况时 LogCat 中是否显示错误来检查它是否是 4。

上面的第 2 项是一个很好的候选者。您确定代码总是正确停止扫描吗?您可能希望每次开始和停止扫描时都进行记录,并确保您永远不会看到连续两次开始。

如果上述问题都不是问题,则剩下可能性 5,这表明 ROM 中的蓝牙芯片或驱动程序有问题。如果是这种情况,您应该能够在不同的设备上运行相同的代码并看到问题消失。