我正在使用Android应用程序中的getUuids()
调用查询Nexus One的UUID,我看到以下内容被退回:
0 th UUID found is 00001105-0000-1000-8000-00805f9b34fb
1 th UUID found is 00001106-0000-1000-8000-00805f9b34fb
2 th UUID found is 0000110a-0000-1000-8000-00805f9b34fb
3 th UUID found is 0000110c-0000-1000-8000-00805f9b34fb
4 th UUID found is 00001112-0000-1000-8000-00805f9b34fb
5 th UUID found is 0000111f-0000-1000-8000-00805f9b34fb
6 th UUID found is 0000112f-0000-1000-8000-00805f9b34fb
7 th UUID found is 00001200-0000-1000-8000-00805f9b34fb
我的问题是:为什么我无法在此列表中看到SPP的标准UUID(00001101-0000-1000-8000-00805f9b34fb
)?
我测试过我可以使用S2蓝牙终端应用程序将Android设备(Xoom)的串行数据发送到此Nexus One手机。在此数据传输中使用了什么UUID?
答案 0 :(得分:1)
S2 Bluetooth Terminal
应用程序使用00001101-0000-1000-8000-00805F9B34FB
硬编码(使用smali检查)。
请注意以下几点:
看着the docs for getUuids()我注意到了:
此方法不会启动服务发现过程以从远程设备检索UUID。而是返回服务UUID的本地缓存副本。如果需要新的UUID,请使用fetchUuidsWithSdp()。
你试过fetchUuidsWithSdp()
吗?
S2 Bluetooth Terminal
虽然有用,但实际上并不是SDP调试的工具。就个人而言,我宁愿尝试使用BlueZ实用程序(或类似的东西,如果在Windows上 - 但我在这里推荐Linux)来查看设备实际宣传了哪些服务。通过这种方式,您可以(至少)将问题缩小到其中一个设备。
修改:在Windows上,您可以使用Bluetooth Network Scanner
以下是如何使用BlueZ工具扫描服务的小样本(此示例使用的GPS接收器):
czajnik@lapcio:~$ hcitool scan
Scanning ...
00:1C:88:11:0E:CC PENTA-GPS
czajnik@lapcio:~$ sdptool browse 00:1C:88:11:0E:CC
Browsing 00:1C:88:11:0E:CC ...
Service Name: SPP Slave
Service RecHandle: 0x10000
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100