蓝牙RFCOMM连接无法在Android 4.2上连续建立

我有一个通过RFCOMM通过蓝牙与自定义设备通话的应用程序.通信代码基于BluetoothTalk示例项目.在Galaxy S3,Galaxy S2,Galaxy Note和Nexus 7之前,它没有任何问题.

最近,Nexus 7升级到了Android 4.2,从那时起,问题发生如下:

>当您第一次使用应用程序设置连接时,意味着设备刚刚启动,应用程序刚刚启动,没有问题,您可以正常获取数据.
>然后如果你停止通信,并尝试重新启动,通信失败,错误“java.io.IOException:bt socket closed,read return:-1”.从那时起,无论你尝试重新连接多少次,它总是失败.
>使其再次工作的唯一方法是,如果重新启动自定义设备和应用程序,则尝试连接,通信正常.但是,一旦你停止并重新启动通信,它一直在失败.

我用Android 4.2借了一个Nexus 4,问题依然存在.

这真的很烦人,因为我们的设备的主要价值是依靠蓝牙RFCOMM应用程序.我仔细检查了Android 4.2中的BT文档,没有看到任何重大变化.我对我方的代码很有信心,因为它适用于任何未运行4.2的Android设备

任何提示或建议将不胜感激.该设备需要在12月初展示,我们真的希望尽快解决此问题.

编辑:现在4.2.1已经被释放,问题仍然没有解决.我们至少得到一些确认,如果它正在工作,将很快修复?

解决方法

这不足以帮助您,但请注意,Google推出了全新的蓝牙堆栈4.2.

这应该是一件好事 – 根据我作为用户和开发人员的经验,使用Bluez(旧组合)的Android从未运行可靠,所以我很高兴听到他们进行了全面重写.

我想我可以说的是,这听起来像你在新的堆栈中遇到了一个bug或怪癖.听到新的堆栈也有问题是不幸的.

关于您的演示,请注意,Google会发布所有Nexus设备的固件映像(https://developers.google.com/android/nexus/images),并将其闪烁到设备上是非常简单的.

所以我建议你提交一个错误报告,然后将您的设备刷新到4.1.2.

相关文章

ADB Remote ATV Android TV 的遥控器,基于 ADB Shell 命令 ...
使用Flutter自带的SearchDelegate组件实现搜索界面,通过魔改...
上篇文章讲解了怎么使用Kotlin的协程配合Retrofit发起网络请...
安卓开发——WebView+Recyclerview文章详情页,解决高度...
Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...