val device: BluetoothDevice = bluetoothAdapter.getRemoteDevice(deviceAddress)
val uuid: UUID = UUID.fromString(uuidString)
try {
bluetoothSocket = device.createRfcommSocketToServiceRecord(uuid)
Log.d("BluetoothHelper", "Socket created: $bluetoothSocket")
bluetoothSocket.connect()
Log.d("BluetoothHelper", "Socket connected: $bluetoothSocket")
inputStream = bluetoothSocket.inputStream
} catch (e: Exception) {
e.printStackTrace()
Log.d("BluetoothHelper", "Socket failed!!!!!!!!!!!! $bluetoothSocket")
}
我正在尝试通过蓝牙将我的应用程序连接到 ESP32S 设备,但 connect() 函数似乎不起作用。套接字创建和失败的日志被打印出来并连接显然没有。从我从调试中收集到的信息来看,bluetoothSocket确实适当地更改了它的值并保存了分配给它的设备(uuid和deviceAddress都是硬编码的)以及OutputStream获得了一些值,但连接没有发生并且inputStream保持为空。我唯一尝试过的就是反转 uuid,因为我在我的 cpp 代码中使用了字节数组,在我的 Kotlin 应用程序中使用了字符串,但这没有帮助。如果其他功能都正常的话,还会有什么问题呢?如果我不给它任何以前在已传递的函数中未使用的附加参数,我怎么可能影响 connect() 呢?另外,我正在使用 BLE。
[
您提供的代码适用于经典蓝牙,因此不适用于 BLE 设备 ESP32S。对于 BLE,您需要使用 connectGatt() 函数。请参阅下面的链接了解更多信息:-