亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述Android bluetoothSocket连接错误相关的知识,希望能为你提供帮助。
我试图通过蓝牙从android设备连接到HC-06。在使用之前我设法让它工作:
bluetoothSocket = (BluetoothSocket) bluetoothDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class}).invoke(this.bluetoothDevice,1);
问题是它只能工作一次。当我断开并关闭输入和输出流然后关闭套接字,然后尝试重新连接它给我这个错误:
D/BluetoothSocket: connect(), SocketState: INIT, mPfd: {ParcelFileDescriptor: FileDescriptor[55]}
D/BluetoothSocket: close() in, this: android.bluetooth.BluetoothSocket@2d5fa8b, channel: 1, state: INIT
D/BluetoothSocket: close() this: android.bluetooth.BluetoothSocket@2d5fa8b, channel: 1, mSocketIS: android.net.LocalSocketImpl$SocketInputStream@39f43768, mSocketOS: android.net.LocalSocketImpl$SocketOutputStream@184d7781mSocket: android.net.LocalSocket@222b6026 impl:android.net.LocalSocketImpl@727b467 fd:FileDescriptor[55]
D/BluetoothSocket: Closing mSocket: android.net.LocalSocket@222b6026 impl:android.net.LocalSocketImpl@727b467 fd:FileDescriptor[55]
W/System.err: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
W/System.err:at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:739)
W/System.err:at android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:716)
W/System.err:at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:482)
W/System.err:at com.example.work.dmm.clientBluetoothConnection.run(clientBluetoothConnection.java:65)
我试图搜索问题并发现各种帖子说应该使用createRfcommSocketToServiceRecord()。我尝试过这个:
ParcelUuid[] uuids = bluetoothDevice.getUuids();
UUID uuid = uuids[0].getUuid();
bluetoothSocket = bluetoothDevice.createRfcommSocketToServiceRecord(uuid);
但这根本不起作用。我不知道从哪里去,所以任何帮助表示赞赏。
答案【Android bluetoothSocket连接错误】断开连接然后重新连接也有同样的问题我得到一个错误,但在我的情况下有一个广播接收器接收蓝牙适配器重新打开时的动作。这是破坏适配器完全重新开启的原因所以我删除了那部分代码并且它工作...在断开连接后重新连接它工作正常。
推荐阅读
- Android蓝牙BLE我可以修改哪些连接的配置参数
- 使用android-beacon-library检测蓝牙设备
- 目前连接的蓝牙设备android
- Android蓝牙聊天示例无效,无法连接设备
- Android nougat(超过7.0.0)的BLE(蓝牙低功耗)无法读取数据
- 如何使用applescript打开带有quicktime播放器的MP3()
- Appium(连接到127.0.0.1:4723 [/127.0.0.1]失败:连接被拒绝:连接)
- 使用高CPU时通知。通过AppleScript或Automator()
- 在appengine-web.xml中显示“URI未注册”的Android Studio lint()