1

我在 android api 级别 15 中做蓝牙应用程序,我想使用蓝牙连接远程设备。我使用 fetchUuidsWithSdp() 获取 UUID。我正在为所有其他设备(如诺基亚、PC)获取 uuid,但不是 android 设备。

从文档中,

fetchUuidsWithSdp().//这个API是异步的,发送ACTION_UUID intent,UUID是远端支持的。如果在获取 SDP 记录时出错或该过程需要很长时间,则 ACTION_UUID 意图将与缓存中当前存在的 UUID 一起发送。如果不执行服务发现,客户端应该使用 getUuids() 来获取 UUID。

从 docs 'Clients should use the getUuids()',我的问题是,我如何确定 UUID 来自其他设备或来自 android?

4

1 回答 1

1

你不能。

来自Android 文档:“UUID 的意义在于它足够大,您可以选择任意随机且不会发生冲突。”

除了串行端口配置文件 (SPP) UUID 之外00001101-0000-1000-8000-00805F9B34FB,由于上述原因,没有众所周知的 UUID。

0x1101是串行端口配置文件的 ID - 这就是 UUID 以 . 开头的原因00001101。因此,您显然能够识别其他设备支持的配置文件(这首先是 SDP 的主要原因)。您可能会尝试查看设备 ID (DID) 配置文件,看看是否有任何可以依赖的东西来检测对方的制造商。

关于您没有从 Android 设备获得任何 UUID:确保这些设备实际上通过蓝牙提供至少一项服务(例如,网络访问) - 然后您应该获得一个以网络访问配置文件的 ID 开头的 UUID(例如平底锅)。

getUuids() 和 fetchUuidsWithSdp() 之间的区别就像 docs 状态一样,后者实际上执行了对另一台设备的 SDP 请求,而前者只返回与最后一个响应一起获取的那些(最常见的是在发现时收到的响应蓝牙 2.1+)。

于 2012-12-19T08:36:54.557 回答