我开始研究蓝牙和Android通信。所以我从同一个供应商处购买了一个与arduino兼容的突破和盾牌。所以我将这两个与我正在处理的Android应用程序配对,但我意识到这两个产品会返回相同的UUID。我是从同一家供应商那里购买的。
02-18 10:51:24.089:D / ActivateFragment(26721):UUID:00001101-0000-1000-8000-00805f9b34fb 02-18 10:51:24.089:D / ActivateFragment(26721):UUID:00000000-0000-1000-8000-00805f9b34fb
这是我的Android应用程序代码打印出UUID。
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "daction=="+ action);
if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
//discovery starts, we can show progress dialog or perform other tasks
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
//discovery finishes, dismis progress dialog
} else if (BluetoothDevice.ACTION_FOUND.equals(action)) {
//bluetooth device found
BluetoothDevice device = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.i(TAG, "bluetooth name is "+ device.getName());
if (device == null || device.getName() == null || device.getName().isEmpty()) {
return;
}
Log.i(TAG, "Found device " + device.getName() + "=="+ device.getAddress() + "=="+ device.getBondState() + "=="+ device.getType());
ParcelUuid[] uuids = device.getUuids();
if (uuids == null) {
return;
}
for (ParcelUuid uuid: uuids) {
Log.d(TAG, "UUID: " + uuid.getUuid().toString());
}
}
}
};
所以我无法从Android应用程序连接到两个蓝牙。应用程序连接到它后,它就无法连接到下一个应用程序。有趣的是00001101-0000-1000-8000-00805f9b34fb工作正常,但00000000-0000-1000-8000-00805f9b34fb无法正常工作。
我认为我的应用程序出了问题,但当我连接到它时(一个是活动的,但另一个是活动的)一次一个,它连接到两个。
UUID是否嵌入在蓝牙设备中,Android是从蓝牙设备获取还是由Android手机随机分配?
如果知道这段关系的人将我指向某个网站或任何教程,我将不胜感激。