Android 10 BLE 连接问题

Posted

技术标签:

【中文标题】Android 10 BLE 连接问题【英文标题】:Android 10 BLE connection issue 【发布时间】:2020-02-06 12:24:54 【问题描述】:

我正在开发一个使用 BluetoothGatt 连接到 BLE 设备的应用程序。

我能够成功扫描和连接三星、Pixel 等所有设备中的 BLE 设备。我按照android official BLE connection 指南进行扫描和连接。

但是在将我的Pixel 2 更新为Android 10 后,我无法将我的 BLE 设备连接到 Pixel 2。我还看到Google issue tracker 中报告了同样的问题。

为了解决这个问题,我尝试清除蓝牙应用缓存和网络重置,但它适用于某些设备但不是全部。

是否需要采取任何措施来解决此问题,或者是否有适当的方法以编程方式清除蓝牙应用缓存和网络重置。

或者任何其他方式来管理 Android 中的 BLE 连接?

【问题讨论】:

是扫描还是连接不行?任何错误/状态代码? Logcat 消息? 连接不工作。我不会因为这发生在客户的设备上而获取 logcat。 我也有同样的问题,但只有在同一家公司的两台设备配对时才会出现,我无法连接到其中任何一台。取消配对后第二个连接正常。 你在使用绑定吗?设备是公开广播还是私下广播? 我也有同样的问题。我正在使用 BleScanner,但它没有检测到广告。如果我使用 28 构建应用程序,它甚至可以在 Android 10 上运行,但如果我使用 29 构建它则不起作用。完全相同的代码。 【参考方案1】:

在 Android 10 (API 29) 上,权限发生了变化,如果它是您的编译目标,现在需要 ACCESS_FINE_LOCATION 进行 BLE 扫描。

但是,如果您已针对 API 28 进行编译,并且具有 ACCESS_COARSE_LOCATION,它应该可以继续在 Android 10 上运行。

来源: https://developer.android.com/about/versions/10/privacy/changes#location-telephony-bluetooth-wifi

请参阅以下内容,因为此问题可能重复: Android 10 not working with BLE Bluetooth scanning

【讨论】:

如果没有 ACCESS_FINE_LOCATION 我们不能进行 BLE 扫描吗? @IgorGanapolsky,是的,我们不能。查看文档了解更多信息:developer.android.com/guide/topics/connectivity/…

以上是关于Android 10 BLE 连接问题的主要内容,如果未能解决你的问题,请参考以下文章

Android 6.0 Marshmallow BLE 连接问题

Android ble 设备有时不会断开连接

Android 4.4:低功耗蓝牙;无需扫描 BLE 设备即可连接

如何通过android应用连接多个BLE设备?

Android中不稳定的BLE连接

蓝牙服务器重启后 BLE 配对出现问题