2012-12-19 150 views
1

我在android api level 15中执行蓝牙应用程序,我想要使用蓝牙来识别远程设备。我使用fetchUuidsWithSdp()获取UUID。我得到所有其他设备,如诺基亚,电脑,但不是Android设备的uuids。在android中识别android蓝牙设备

从Doucment,

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

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

回答

1

你不能。

Android docs:“UUID的要点是它足够大,您可以选择任意随机数并且不会发生冲突。”

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

0x1101是串行端口配置文件的ID - 这就是为什么UUID以00001101开头的原因。因此,您显然能够识别其他设备支持的配置文件(这是SDP首要考虑的主要原因)。您可能会尝试查看设备ID(DID)配置文件,并查看是否有任何可用于检测对方制造商的信息。

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

和fetchUuidsWithSdp()getUuids之间的差值()是一样的文档状态,即后者实际上执行SDP请求向所述其他设备,而前者只返回那些取出与最后应答(最常见的是一个在发现蓝牙2.1+后收到)。

+0

感谢您的回复,我想要何时使用getUuid()进行android蓝牙设备?,我如何知道它是android设备还是其他blutoothDevice对象? –

+0

正如我所说的,如果远程设备是Android,您无法从BluetoothDevice知道。具体来说,getUuid()也无济于事。 – domsom

+0

有没有解决这个问题的方法? –