我不明白蓝牙 UUID 表示什么。UUID 是否表示协议(例如RFCOMM)?如果是这样,为什么这些createRfcommSocketToServiceRecord()
方法需要 UUID,当它们在其名称中指定 rfcomm 时?为什么 BluetoothChat 示例代码有一个看似任意的硬编码 UUID?
出现我的问题是因为,根据这个问题,当运行 4.0.4 的设备尝试使用反射连接(到外部的非 Android 设备)时,我得到一个空指针异常。但是,该问题的解决方案对我不起作用。UUID muuid = device.getUuids()[0].getUuid();
引发异常。
编辑:我已经通过根据这个答案(使用UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
)硬编码串行端口服务的 UUID 解决了这个问题。
我对为什么我需要提供一个 UUID 来使用createInsecureRfcommSocketToServiceRecord(),
但不使用反射方法来创建不安全的 rfcomm 套接字感到更加困惑。
任何人都可以理顺我吗?