Установить / получить UUID на устройстве Android
Я сидел над этой проблемой несколько недель, иногда она просто работает случайным образом, но мне действительно нужно понять, как заставить это работать на разных устройствах.
Я хочу подключить приложение Android (телефон) с другим (Google Glass), через Bluetooth. Поэтому я вызываю "listenUsingRfcommWithServiceRecord" на моем стеклянном устройстве. Насколько я понимаю, это ДОЛЖНО добавить указанный UUID к сервису SPD моего Glass. Я не понимаю, что делает параметр String name, если честно, поэтому я просто добавил свое имя приложения. Этот код используется на стекле:
public BtServer() {
btAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothServerSocket tmp = null;
try {
tmp = btAdapter.listenUsingRfcommWithServiceRecord("phone", MY_UUID);
} catch (final IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
btServerSocket = tmp;
}
Когда я получаю UUID моего устройства Glass на телефоне и отображаю их, UUID по какой-то причине отображается только на одном из устройств. Это код, который я использую + вывод:
/**
* get paired glass devices
* @return set of paired glasses
*/
private Set < BluetoothDevice > getPairedGlass() {
final Set < BluetoothDevice > pairedDevices = btSocket.getPairedDevices(); //returns all bonded Devices
for (final BluetoothDevice e: pairedDevices)
if (e.fetchUuidsWithSdp()) {
final ParcelUuid[] uuids = e.getUuids();
for (final ParcelUuid b: uuids)
System.out.println("" + e.getName() + ": " + b.getUuid().toString());
}
return pairedDevices;
}
Выход:
03-17 14:54:29.812: I/System.out(17149): xxx's Glass: 0000111e-0000-1000-8000-00805f9b34fb
03-17 14:54:29.812: I/System.out(17149): xxx's Glass: 00001115-0000-1000-8000-00805f9b34fb
03-17 14:54:29.812: I/System.out(17149): xxx's Glass: 00001133-0000-1000-8000-00805f9b34fb
03-17 14:54:29.822: I/System.out(17149): xxx's Glass: f96647cf-7f25-4277-843d-f407b4192f8b
03-17 14:54:29.822: I/System.out(17149): xxx's Glass: f15cc914-e4bc-45ce-9930-cb7695385850
03-17 14:54:29.822: I/System.out(17149): xxx's Glass: ab390c1b-9a5b-4104-932d-cce5e542b5c6
03-17 14:54:29.822: I/System.out(17149): xxx's Glass: ab390c1b-9a5b-4104-932d-cce5e542b5c6
03-17 14:54:29.822: I/System.out(17149): xxx's Glass: 5e8945b0-9525-11e3-a5e2-0800200c9a66
03-17 14:54:29.832: I/System.out(17149): Test Account's Glas: 0000111e-0000-1000-8000-00805f9b34fb
03-17 14:54:29.832: I/System.out(17149): Test Account's Glas: 00001115-0000-1000-8000-00805f9b34fb
03-17 14:54:29.832: I/System.out(17149): Test Account's Glas: 00001133-0000-1000-8000-00805f9b34fb
03-17 14:54:29.832: I/System.out(17149): Test Account's Glas: f96647cf-7f25-4277-843d-f407b4192f8b
03-17 14:54:29.832: I/System.out(17149): Test Account's Glas: 5e8945b0-9525-11e3-a5e2-0800200c9a66
03-17 14:54:29.832: I/System.out(17149): Test Account's Glas: f15cc914-e4bc-45ce-9930-cb7695385850
UUID, указанный в обоих приложениях: "ab390c1b-9a5b-4104-932d-cce5e542b5c6".
Это отлично работает на моем стекле xxx, но я не могу заставить его работать на моем тестовом аккаунте Glass. Я не понимаю, почему fetchUuidsWithSdp для моего устройства xxx, так как оно сейчас не связано с моим телефоном, возвращает true. Таким образом, эти выходы, вероятно, просто локальные копии.
При вызове "createInsecureRfcommSocketToServiceRecord(UUID)" на телефоне я получаю IOException, потому что на моем стекле нет службы с таким uuid. При попытке другого UUID, это также не работает.
Итак, как мне установить UUID для моего приложения на моем устройстве? Или я получаю неверные UUID и они действительно установлены? Я был бы так благодарен, если бы кто-то знал, как это сделать.