在android中识别android蓝牙设备

时间:2012-12-19 07:47:42

标签: java android bluetooth android-4.0-ice-cream-sandwich

我在android api 15级做蓝牙应用,我想使用蓝牙连接远程设备。我使用fetchUuidsWithSdp()获取UUID。我正在获得所有其他设备的uuids,如nokia,pc但不是Android设备。

来自Doucment,

  

fetchUuidsWithSdp()。//此API是异步的,并且发送ACTION_UUID意图,远程端支持UUID。如果获取SDP记录时出错或者进程需要很长时间,则会使用当前存在于缓存中的UUID发送ACTION_UUID意图。如果不执行服务发现,客户端应使用getUuids()来获取UUID。

来自docs'客户端应该使用getUuids()',我的问题是,我怎样才能确定UUID是来自其他设备还是来自android?

1 个答案:

答案 0 :(得分:1)

你不能。

来自Android docs:“UUID的重点在于它足够大,你可以选择任何随机的,它不会发生冲突。”

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

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

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

与文档状态一样,getUuids()和fetchUuidsWithSdp()之间的区别在于后者实际上向其他设备执行SDP请求,而前者只返回那些使用最后一个响应获取的请求(最常见的是收到的发现蓝牙2.1 +)。