我的UUID应该是什么?

时间:2015-02-25 15:29:19

标签: android bluetooth

我对Android比较陌生,我正在Nexus 9上创建蓝牙应用程序,它将连接到我的同事在Arduino处理器上编写的蓝牙设备应用程序。我正在关注这个文档,这非常有用:

http://developer.android.com/guide/topics/connectivity/bluetooth.html

但是,要作为客户端连接,我必须使用此代码,该代码使用此MY_UUID符号。

      // MY_UUID is the app's UUID string, also used by the server code
        tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

在文中,文档说:“这里传递的UUID必须与服务器设备在打开BluetoothServerSocket时使用的UUID相匹配(使用listenUsingRfcommWithServiceRecord(String,UUID))。使用相同的UUID只是一个难题 - 将UUID字符串编码到您的应用程序中,然后从服务器和客户端代码中引用它。“

这让我很困惑......这是否意味着它必须与Arduino固件中指定的UUID相匹配?我写这个固件的同事不知道那会是什么。当我嗅到他的固件广告时,它的ID为“RNBT-DFBC”,但当我将其用作UUID时,我得到一个例外:

java.lang.IllegalArgumentException: RNBT-DFBC is not a valid Bluetooth address

我所看到的示例蓝牙项目似乎都没有解释这个UUID值的基础,它们只是“神奇数字”。

那么......我究竟使用什么作为我的createRfcommSocketToServiceRecord()函数的参数?我觉得我误解了这个,因为蓝牙客户端通常不太可能对它想要连接的服务器有这种“亲密”的了解。很抱歉,如果这是一个愚蠢的问题,但任何帮助都表示赞赏。

2 个答案:

答案 0 :(得分:0)

Here是一种很好的方式,可以告诉您如何为您的应用获取UUID。

UUID

答案 1 :(得分:0)

您应该使用设备和Arduino设备都知道的预共享UUID。例如:

public static final java.util.UUID MY_UUID
        = java.util.UUID.fromString("DEADBEEF-0000-0000-0000-000000000000");

字符串的格式符合RFC 4122。您可以在Android UUID documentation中找到有关Android细节的更多信息。