微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android kotlin 蓝牙套接字连接然后断开连接

如何解决Android kotlin 蓝牙套接字连接然后断开连接

我遇到了蓝牙连接然后立即断开的问题,我查看了很多解决方案,但最终这个简单的解决方解决了我的问题。

但是我很想得到反馈,因为我确信我会遗漏一些固有的危险。

解决方案:我将 socket.connect() 放入一个循环中(如下所示)。 注意:这对我有用,其他堆栈溢出的解决方案没有

  • 最明显的是,我没有为 while 循环设置超时(我稍后会处理)
  • 我也知道每个设备可以有多个 uuid,但这不是我想要解决的问题。
fun connect(device: BluetoothDevice) {
            bluetoothAdapter?.canceldiscovery()
            val socket = device.createRfcommSocketToServiceRecord(device.uuids[0].uuid)
            Thread().run {
                while (!socket.isConnected) {
                    try {
                        socket.connect()
                    } catch (e: Exception) {
                        Log.d("DEVICE_CONNECT_FAIL",e.toString())
                    }
                }
                if (socket.isConnected) {
                    interrupt()
                }
            }
        }

解决方法

阅读本文档https://developer.android.com/reference/android/bluetooth/BluetoothDevice#createRfcommSocketToServiceRecord(java.util.UUID) 了解如何建立安全连接。

我建议您尝试使用具有正确 UUID 的不安全类型的连接

这个 question 也可以帮助您。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。