1

我的问题是我无法找到我自己的蓝牙设备的设备类别和设备服务。虽然我可以使用

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

我什至尝试访问 sys>devices>virtual path 中的蓝牙文件夹,但该文件夹并非位于每个设备中。

有没有办法通过访问proc文件系统来获取蓝牙信息,如果是,请帮忙。

真的很奇怪,我能够通过获取远程设备的蓝牙类

btAdapter.getBondedDevices();//返回蓝牙设备类的集合

但我无法获得默认(自己的)蓝牙的设备类。

4

1 回答 1

0

最后经过一番挣扎,我找到了一种找到自己的蓝牙设备服务的方法。Sdptool 提供了在蓝牙设备上执行 SDP 查询和管理本地 sdpd 的接口。它的代码片段如下:此代码仅适用于具有 root 访问权限的设备。

try {
          System.setOut(new PrintStream(new FileOutputStream("/mnt/sdcard/abc.txt")));
          System.out.println("HelloWorld1");
          Process p;
          p = Runtime.getRuntime().exec(new String[] { "su", "-c","sdptool", "browse", "local" });
          BufferedReader stdInput = new BufferedReader(new InputStreamReader(
                  p.getInputStream()));
          String s;
          String res = "";
          while ((s = stdInput.readLine()) != null) {
              if(s.contains(""))
              System.out.println(s);
              Log.e("above -----", s);
          }
          p.destroy();
          return res;
      } catch (Exception e) {
          e.printStackTrace();
      }

如果您想发现另一个蓝牙设备的服务,则可以将“本地”替换为远程设备的 MAC 地址。

或者您也可以尝试运行 sdp 工具 usinf adb shell,如下所示:

>> adb shell sdptool 浏览本地

于 2013-04-28T09:39:20.963 回答