Android Bluetooth Gatt Server/Client 同时连接的问题

Issues with Android Bluetooth Gatt Server/Client Simultaneous Connection

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

这是现在的过程:

1) 启动一个 phone 作为服务器 (Phone1)

2) 启动另一个 phone 作为客户端 (Phone2)

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

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

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

根据蓝牙 specification蓝牙规范 4.2 第 6 卷 B 4.5 部分:连接状态)

"There shall be only one connection between two LE device addresses. An initiator shall not send a connection request to an advertiser it is already connected to. If an advertiser receives a connection request from an initiator it is already connected to, it shall ignore that request."

可能 Android 手机可以防止这种断开连接的情况,因为我这里也有同样的问题。