【问题标题】:Android Bluetooth Where can I get UUID?Android 蓝牙 在哪里可以获得 UUID?
【发布时间】:2011-05-01 06:00:02
【问题描述】:

我想通过蓝牙连接 3 台设备。

例如,我使用 BluetoothChat。所以我怎么理解我应该为这个设备使用不同的 UUID。我一直在尝试通过这样的 UUID=766c82f0-e1b4-11df-85ca-0800200c9a66 进行连接,我是从 Web UUID 生成器中获得的。但它根本不起作用。

如果我使用 UUID=00001101-0000-1000-8000-00805F9B34FB,我已成功连接(连接到 1 个设备)

我在哪里可以获得 UUID?

【问题讨论】:

    标签: android bluetooth uuid


    【解决方案1】:

    如果您使用的是 linux 或 mac,请在终端中输入“uuidgen”这个不带引号的命令,您将获得一个唯一的 UUID,在您的 android 项目中使用它。

    【讨论】:

      【解决方案2】:

      UUid 用于唯一标识应用程序。每个应用程序都有一个唯一的 uuid。因此每个设备使用相同的 uuid

      【讨论】:

        【解决方案3】:

        为了连接到您的目标设备,您需要知道要连接到什么。列出您的设备目标会更有帮助。

        UUID可以通过这个链接获取,http://www.bluecove.org/bluecove/apidocs/javax/bluetooth/UUID.html

        在这里,您需要了解每个目标设备中使用的蓝牙配置文件。您提到“UUID=00001101-0000-1000-8000-00805F9B34FB”有效。

        这是因为您的设备具有 SPP 蓝牙配置文件。 SPP 代表串行端口配置文件。

        您还可以在 Bluetoothdevice.getuuids 上查找 http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#getUuids()

        【讨论】:

          【解决方案4】:

          您必须获取蓝牙 UUID 才能建立与设备的连接,

          您可以使用反射调用方法getUuids()

              try {
              BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
              Method getUuidsMethod = BluetoothAdapter.class.getDeclaredMethod("getUuids", null);
              ParcelUuid[] uuids = (ParcelUuid[]) getUuidsMethod.invoke(adapter, null);
          
                   if(uuids != null) {
                       for (ParcelUuid uuid : uuids) {
                           Log.d(TAG, "UUID: " + uuid.getUuid().toString());
                       }
                   }else{
                       Log.d(TAG, "Uuids not found, be sure to enable Bluetooth!");
                   }
          
              } catch (NoSuchMethodException e) {
                  e.printStackTrace();
              } catch (IllegalAccessException e) {
                  e.printStackTrace();
              } catch (InvocationTargetException e) {
                  e.printStackTrace();
              }
          

          别忘了添加权限:

             <uses-permission android:name="android.permission.BLUETOOTH"/>
          

          并且你必须启用蓝牙才能获取 Uuid,例如:

          UUID: 0000110f-0000-1000-8000-00805f9b12fb
          UUID: 0000111d-0000-1000-8000-00805f9b12fb
          UUID: 0000111a-0000-1000-8000-00805f9b12fb
          

          【讨论】:

            【解决方案5】:

            想象一下,您有一项或多项服务。每个服务都有自己的 UUID。 UUID=00001101-0000-1000-8000-00805F9B34FB 是 SPP 专用的。如果您未设置 SPP UUID,某些设备(例如蓝牙串口板)将无法工作。 但对于智能手机等 Android 设备之间的点对点连接,您可以使用自己生成的 UUID。 设备必须设置相同的 UUID 才能找到彼此并连接。 UUID 格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 其中 x=[0,...,9]|[A,...,F]。 好主意是将 xxxxxxxx-xxxx-xxxx-xxxx- 设置为您生成的唯一 ID。 第二部分 xxxxxxxxxxxx 可能设置为您的服务器 MAC 地址,没有“:”。 在客户端,您可以从已知生成的唯一 ID(嵌入到您的应用程序)和不带“:”的服务器 MAC 地址构造 UUID。您可以在蓝牙设备发现过程中获取服务器 MAC 地址。

            【讨论】:

            • 我发现这很有帮助。请你举一个UUID的例子。我似乎无法弄清楚
            • @RohitRawat 感谢您的投票。不幸的是,我不再需要使用蓝牙 API,也没有关于它的最新信息。我敢肯定,自从我的回答以来,获取 UUID 的逻辑发生了很大变化。如果您在 2021 年需要 UUID,您需要查看 Android 文档。对于 UUID“示例”,我的答案包含它。如果您需要代码来启动,请查看 GitHub 上的 Android SDK 示例。
            【解决方案6】:

            您必须对您尝试连接的设备进行服务发现,获取它返回的 UUID(这将对应于设备上运行并接受连接的服务),然后连接到它。

            【讨论】:

              猜你喜欢
              • 2021-03-24
              • 2011-06-24
              • 1970-01-01
              • 1970-01-01
              • 2015-04-10
              • 2017-05-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多