Android - 运行Android 2.3.6的Nexus One的SPP UUID

时间:2012-10-09 06:32:00

标签: android spp

我正在使用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?

1 个答案:

答案 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