【发布时间】:2012-12-07 12:15:52
【问题描述】:
我不明白蓝牙 UUID 表示什么。 UUID 是否表示协议(例如RFCOMM)?如果是这样,为什么createRfcommSocketToServiceRecord() 方法需要 UUID,当它们在其名称中指定 rfcomm 时?为什么 BluetoothChat 示例代码有一个看似随意的硬编码 UUID?
我的问题出现是因为,根据this question,当运行 4.0.4 的设备尝试使用反射连接(到外部的非 Android 设备)时,我得到一个空指针异常。但是,该问题的解决方案对我不起作用。 UUID muuid = device.getUuids()[0].getUuid(); 引发异常。
编辑:我已经按照this answer(使用UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");)硬编码串行端口服务的UUID解决了这个问题。
为什么我需要提供一个 UUID 来使用 createInsecureRfcommSocketToServiceRecord(), 而不是使用反射方法创建一个不安全的 rfcomm 套接字,我对此感到更加困惑。
谁能帮我解惑?
【问题讨论】:
-
除学术目的外,从未使用过蓝牙连接,但我所知道的是,UUID 是设备的标识符,类似于设备的地址,对于设备来说保持不变。
-
@Creator:这与这个答案相矛盾:stackoverflow.com/a/4963069/1286571
-
这就是我对蓝牙 UUID 的全部了解,您可以尝试阅读此 pdf 以更好地了解蓝牙协议和 UUID -people.csail.mit.edu/rudolph/Teaching/Articles/PartOfBTBook.pdf
-
问题:当Android手机不支持远程设备的UUID时是否有任何后果。 (Android 中未列出 UUID ... getUuids() )?
-
嘿嘿嘿!我想问一些事情,@ForeverWintr,如果我用自己的格式定义一个 UUID 并在两个 android 设备中使用,可以吗?我的意思是,他们可以互相交流吗?
标签: android bluetooth uuid rfcomm