最近,我的团队一直致力于开发Android应用程序,其目的与教师出勤工具类似 . 这个想法是教师设备将做广告,约20个学生设备将发现并与之连接 .

目前,我们正在测试三款Kindle Fire 7设备 . 一个是“老师”,另外两个是学生 . 我们的用例是:

“教师”设备广告首先“学生”设备发现验证第一个“学生”设备连接到教师第二个“学生”设备发现验证第二个“学生”设备连接到教师

事实证明,当使用特定的一个设备作为"teacher,"时,上述用例每次都可以正常工作 . 但是,当"teacher"托管在其他两个设备中的任何一个上时,我们会遇到一些问题 . 在这种情况下最常见的结果是教师将做广告,第一个学生将发现它并连接,然后第二个学生也会发现它,但是将无法请求连接(上面的第5行),返回STATUS_BLUETOOTH_ERROR . 在某些情况下,同一设备将显着延迟其发现过程,在该过程中,它甚至在开始寻找 endpoints 之前停顿几分钟,并最终导致相同的错误 .

我已经通过Stack Overflow帖子扫描了这个蓝牙错误,我们已经尝试进行已建议的修复 - 蓝牙切换,设置P2P_STAR和P2P_CLUSTER作为策略,重启设备,停止发现故障设备并重新尝试发现和请求连接 - 但不幸的是,似乎这些都没有真正解决问题 .

有没有人了解为什么这可以在某些设备上取得成功,但对其他设备却没有?我们确保所有这些设备都具有相同的网络设置/配置,并且它们与Kindle的型号相同,所以我不确定会出现什么问题 .

编辑:我没有包含我的代码,因为有很多关于附近的连接,我不想让这篇文章的篇幅过于夸张;一般来说,我们直接模仿Google的Rock,Paper,Scissors和Walkie-Talkie示例回购所展示的方法 . 如果看到代码仍然有帮助,我会发布它 .