我对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()函数的参数?我觉得我误解了这个,因为蓝牙客户端通常不太可能对它想要连接的服务器有这种“亲密”的了解。很抱歉,如果这是一个愚蠢的问题,但任何帮助都表示赞赏。
答案 0 :(得分:0)
Here是一种很好的方式,可以告诉您如何为您的应用获取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细节的更多信息。