我在三星Galaxy S手机上运行了一个Android应用程序。应用程序通过蓝牙从设备收集传感器数据。在大多数情况下,没有数据被发送/接收。我已经设置了我的应用程序,以便在连接“丢失”的情况下“自动重新连接”蓝牙设备。
我发现在应用程序运行约1.5小时后,手机失去了与蓝牙设备的连接,自动重新连接失败。
从设备向手机发送传感器数据是“关键任务”。如何确保连接不会丢失。解决方案需要是最佳的。也就是说,为了节省电池,手机需要能够睡眠/休眠。
答案 0 :(得分:1)
断开连接时,您应该监听以获取传入连接(使用BluetoothServerSocket)。它应该在前台服务中运行,永远不会停止。 此服务将监视每种情况(ASyncTasks)的蓝牙连接状态(断开连接,侦听,连接)和垃圾邮件线程。
收听主题应完全按照Android documentation中的说明进行操作:
要创建已准备好接收传入的侦听BluetoothServerSocket,请使用BluetoothAdapter.listenUsingRfcommWithServiceRecord()。然后调用accept()来侦听传入的连接请求。
为了进一步节省电池,用户可以关闭蓝牙 - 这将终止您的监听线程,但不会终止整个服务(进入断开状态)。 当用户重新打开蓝牙时,您的服务应该注意到更改并重新启动监听线程。
答案 1 :(得分:0)
我的一个朋友有类似的问题, 他现在使用Android应用程序“ BluetoothKeepalive ” 避免连接丢失