蓝牙教程我读到所有提到我需要在两侧(服务器和客户端)具有相同的UUID以在两个设备之间建立连接。但是,如果我不知道我的客户的UUID,如果我不在乎呢?
背景资料:我有超过1000个带蓝牙的微控制器。每个微控制器都有一个固定且不可更改的UUID。智能手机应该能够向该微控制器发送字符串消息(单个连接,一个智能手机正在控制一个微控制器)。无论哪个智能手机控制哪个微控制器都无所谓。所以实际上我真的不关心客户的UUID。
所以我的智能手机是服务器,正在为传入的蓝牙连接打开一个监听线程,但我必须在这里输入一个UUID:
tempBluetoothServerSocket = bluetoothAdapter.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);
但是,当我拥有数千种不同的UUID时,我真的不关心UUID我应该放在哪里?还有BluetoothSocket:
tempBluetoothSocket = this.bluetoothDevice.createRfcommSocketToServiceRecord(MY_UUID);
如何知道哪个UUID?
所以核心问题是:我如何连接到任何微控制器?
答案 0 :(得分:1)
我一直在用这个:
// Unique UUID for this application
private static final UUID UUID_ANDROID_DEVICE =
UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");
private static final UUID UUID_OTHER_DEVICE =
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
它的用途是:
public AcceptThread(boolean isAndroid) {
BluetoothServerSocket tmp = null;
// Create a new listening server socket
try {
if(isAndroid)
tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE, UUID_ANDROID_DEVICE);
else
tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE, UUID_OTHER_DEVICE);
} catch (IOException e) { }
mmServerSocket = tmp;
}
public ConnectThread(BluetoothDevice device) {
mmDevice = device;
BluetoothSocket tmp = null;
// Get a BluetoothSocket for a connection with the
// given BluetoothDevice
try {
if(BluetoothService.this.isAndroid)
tmp = device.createRfcommSocketToServiceRecord(UUID_ANDROID_DEVICE);
else
tmp = device.createRfcommSocketToServiceRecord(UUID_OTHER_DEVICE);
} catch (IOException e) { }
mmSocket = tmp;
}
这允许我的设备连接到我测试过的任何蓝牙设备。为了测试,它只是变化的蓝牙条码扫描器。虽然我相信这是一个通用的RFCOMM UUID。
它还没有让我失望。