Установить / получить 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 и они действительно установлены? Я был бы так благодарен, если бы кто-то знал, как это сделать.

0 ответов

Другие вопросы по тегам