Android 10 中的蓝牙串行有啥变化吗?

Posted

技术标签:

【中文标题】Android 10 中的蓝牙串行有啥变化吗?【英文标题】:Did something change with Bluetooth Serial in Android 10?Android 10 中的蓝牙串行有什么变化吗? 【发布时间】:2020-09-23 16:07:07 【问题描述】:

我的 android 10 上的 Google Pixel 3a XL 无法使用蓝牙 2.0 与蓝牙 SPP 模块建立良好的蓝牙串行连接。但是,我可以使用蓝牙 1.2 连接到模块。我无法确定这是否与所有 Android 10 相关,还是与 Pixel 3 系列相关。

我正在尝试通过蓝牙从 GPS 接收器获取 GPS 位置数据。当我尝试使用 createInsecureRfcommSocketToServiceRecord() 建立连接时,串行连接实际上会持续 1-5 秒。我确实从 GPS 接收器获得了一些数据,但是缺少一些数据块。然后数据停止流动。除了我的应用程序之外,我还用其他几个蓝牙串行终端程序对此进行了测试,它们都有相同的结果——我得到了一些数据,然后它就停止了。

我可以在运行 Android 9 的不同 Android 设备上使用相同的蓝牙模块,而且效果很好。我也可以从 Windows 连接到这个蓝牙模块,它也可以正常工作。

我有第二个较旧的蓝牙模块(运行蓝牙 v1.2),令人惊讶的是它实际上与 Pixel 兼容。

还有其他人在 Android 10 上看到 Serial over Bluetooth 的问题吗?

【问题讨论】:

【参考方案1】:

Android 10 发生的一些变化是,除了权限之外,您还需要启用您的位置才能连接到某些 BLE 设备。我不确定这是否会对您有所帮助,但可以让您了解您遇到的问题。

“某些电话、蓝牙、Wi-Fi API 需要 FINE 位置权限 如果您的应用面向 Android 10 或更高版本,则它必须具有 ACCESS_FINE_LOCATION 权限才能使用 Wi-Fi、Wi-Fi Aware 或蓝牙 API 中的多种方法。以下部分列出了受影响的类和方法。”

https://developer.android.com/about/versions/10/privacy/changes

【讨论】:

感谢您提及。我确实拥有允许的位置权限并打开了位置服务。在允许和不允许位置的情况下对此进行了测试,它总是做同样的事情,一些数据,然后什么都没有。

以上是关于Android 10 中的蓝牙串行有啥变化吗?的主要内容,如果未能解决你的问题,请参考以下文章

蓝牙连接到 iOS 和 android

Android 与 Ubuntu 的蓝牙串行通信

有啥方法可以从 Windows 10 中的 c# 桌面应用程序使用蓝牙 LE?

苹果平板电脑蓝牙关闭有啥好处

win10升级后蓝牙不见了,设备管理器里没有,多了个串行控制器里的未知USB设备?

CoreBluetooth 框架能否与从属蓝牙 2.0 串行模块配对并通信?