【问题标题】: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 的问题吗?

【问题讨论】:

    标签: android bluetooth rfcomm spp


    【解决方案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

    【讨论】:

    • 感谢您提及。我确实拥有允许的位置权限并打开了位置服务。在允许和不允许位置的情况下对此进行了测试,它总是做同样的事情,一些数据,然后什么都没有。
    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多