【问题标题】:Issues with Android Bluetooth Gatt Server/Client Simultaneous ConnectionAndroid 蓝牙 Gatt 服务器/客户端同时连接的问题
【发布时间】:2016-06-01 19:43:31
【问题描述】:

我正在努力创建一个可以同时充当客户端和服务器以进行 gatt 连接的应用程序,但是每次在服务器充当客户端时运行服务器时,我都会收到未知状态和断开连接状态。

这是现在的过程:

1) 启动一部手机作为服务器(Phone1)

2) 启动另一部手机作为客户端(Phone2)

3) 将 Phone2 连接到 Phone1 并接收有关当前时间的通知更新。

4) 在 Phone2 上启动服务器 gatt 服务器,这就是我的蓝牙 gatt 回调的未知状态。首先它将 Phone2 与 Phone1 断开(断开 gatt 连接),然后 Phone2 的 BluetoothGattCallBack 的 onConnectionStateChange 返回断开状态和状态码 19。

我不确定是什么原因造成的,但两部手机都是相同的摩托罗拉 XT1526 API 级别 22。这可能是一个硬件问题,手机不能同时充当 gatt 服务器和客户端吗?我还尝试为同一手机的客户端和服务器使用一个蓝牙适配器对象,但也尝试使用两个单独的蓝牙适配器对象。任何帮助将不胜感激。

【问题讨论】:

    标签: android bluetooth bluetooth-lowenergy gatt


    【解决方案1】:

    根据蓝牙specificationBluetooth Spec 4.2 Vol. 6 part B 4.5: Connection State)

    "两个 LE 设备地址之间只能有一个连接。 发起者不应向已连接的广告商发送连接请求。 如果广告商从它已经连接的发起者那里收到连接请求,它应该忽略该请求。”

    Android 电话可能会通过断开连接来防止这种情况,因为我在这里遇到了同样的问题。

    【讨论】:

    • “两个 LE 设备地址之间应该只有一个连接”我认为它不适用于同时作为服务器和客户端。它适用于尝试两次连接到单个设备。
    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 2015-06-14
    • 2013-06-21
    • 2013-08-14
    相关资源
    最近更新 更多