Android Bluetooth с низким энергопотреблением Motorola API сопряжение

Я работаю над использованием API BT 4.0, который Motorola предоставила вместе с RAZR. В одном из их документов указано использовать Android API для сопряжения перед подключением и использованием их фреймворка. В соответствии с их инструкциями я выполнял сопряжение с приложением настроек ОС Bluetooth, но оно никогда не запрашивает ключ. Он будет сочетаться, но, похоже, не свяжется, и это критично для меня.

Мой вопрос в том, что когда они говорят «использование Android API», это относится к простому использованию утилиты ОС Bluetooth для сопряжения заранее (как я делал), или есть какой-то способ сделать это с помощью кода в моем приложении. Они ссылаются на функцию "createBond()", которая, насколько мне известно, не является доступной функцией (по крайней мере, без каких-то сомнительных библиотек или отражений).

Приветствуются любые советы, особенно те, кто успешно использовал API, если они могут рассказать о своем процессе. Я просто ищу некоторую ясность в этом вопросе :)


person Lloyd    schedule 06.06.2012    source источник


Ответы (3)


Ллойд,

Вы правы, следуйте инструкциям в ссылке, которую вы разместили.

Вне кодирования, когда они говорят использовать стандартный API Android для «не-le» операций, они имеют в виду, что нужно выполнить сопряжение устройства ble так же, как и любые классические устройства Bluetooth в настройках Android -> беспроводная связь и сеть -> bluetooth - > сканировать устройства.

Если используемое вами устройство совместимо с Motorola, оно будет сопряжено, но не подключено.

Теперь в коде вы можете обнаружить это сопряженное устройство с помощью того же метода

BluetoothAdapter.getDefaultAdapter().getBondedDevices()

Чтобы еще раз проверить, совместим ли ваш Android-телефон с LE, запустите этот код:

 public static boolean checkBLESupport() {
        boolean deviceSupportsLE;

    try {
        @SuppressWarnings({ "unused", "rawtypes" })
        Class object = Class.forName("android.server.BluetoothGattService");
        deviceSupportsLE = true; 
    } catch (Exception e) {
        deviceSupportsLE = false; 
    }

    return deviceSupportsLE;
}

И дважды проверьте, является ли сопряженное устройство Bluetooth LE, когда вы просматриваете связанные устройства. Проверьте устройство с этим кодом.

 if (device.getBluetoothClass() == null) {
    Log.i(TAG, "This device is BLE compatible");
        b = true;
} else {
    Log.i(TAG, "This device is not BLE");
        b = false;
}

Теперь, чтобы установить соединение с вашего LE-совместимого телефона с LE-совместимым Bluetooth-устройством, следуйте инструкциям службы Gatt по ссылке, которую вы разместили. http://developer.motorola.com/docs/bluetooth-low-energy-api/

Обратите внимание, что в этом примере он подключается к Bluetooth-монитору сердечного ритма с низким энергопотреблением.

Если вы не пытаетесь подключиться к пульсометру с профилем сердечного ритма LE, вот ссылка на другой документ Motorola, в котором подробно описано создание собственного профиля LE для использования с платформой GATT. http://developer.motorola.com/docs/bluetooth-low-energy-gatt-framework-api/

Если инструкции в каком-либо из этих документов недостаточно ясны, Motorola предлагает образцы приложений для Android, использующие платформы из этих документов.

person josh527    schedule 06.07.2012
comment
Вы не можете выполнить сопряжение с BLE в настройках Android. - person chwi; 30.07.2012
comment
С BLE-совместимым телефоном. Вы можете выполнить сопряжение с помощью BLE, у меня есть Droid RAZR, и ble прекрасно сочетается со стандартными настройками Android. Я предполагаю, что Droid 4 также будет работать. Я не тестировал другие новые устройства, такие как Galaxy SIII или HTC Evo 4gLTE. - person josh527; 30.07.2012
comment
Вы уверены, что говорите о Bluetooth Low Energy? Потому что вы ничего не связываете с пульсометром, говорящим по BLE. - person chwi; 30.07.2012
comment
Было подтверждено, что Droid RAZR работает с пульсометром, говорящим по BLE. Недавнее обновление ICS для Droid RAZR сломало возможность BLE с RAZR, но Motorola заявила, что скоро выпустит обновление, чтобы исправить это. В нынешнем виде я убедился, что у RAZR есть возможность BLE, и он подключался к нескольким различным мониторам сердечного ритма BLE (Polar H7, Wahoo Blue) на Android 2.3.6. - person josh527; 31.07.2012
comment
Это интересно. Какое сопряжение он делает, поскольку на этих устройствах нет безопасности или сопоставления ключей? - person chwi; 31.07.2012
comment
Никаких кодов сопряжения не требуется, он сразу же соединяется с помощью стандартного API Bluetooth для Android. Я предполагаю, что эти API используют метод сопряжения Bluetooth 2.1 SSP. Интересно, что после запуска сканирования устройств, если вы выбираете монитор сердечного ритма, он сразу же соединяется с сообщением «Сопряжено, но не подключено», но я проверял на других телефонах, кроме RAZR, и сканирование устройств даже не возвращает, что он нашел УЧР. Это заставляет меня думать, что в аппаратном обеспечении RAZR есть что-то дополнительное, что позволяет стандартное сопряжение Bluetooth. - person josh527; 31.07.2012
comment
Любой способ для приложения программно выполнить все сопряжения/подключения, необходимые для связи с совершенно новым удаленным устройством (т. е. никогда ранее не встречавшимся?). Требование от пользователя ручного подключения через настройки действительно сокращает варианты использования BLE... - person achow; 19.11.2012

Я предполагаю, что стек Motorola имеет поддержку BLE. Но я чувствую, что он не соединяется с устройствами, требующими соединения, хотя некоторые датчики работают. Я пробовал с датчиком приближения, который требует соединения. Он никогда не подключается, хотя устройства обнаруживаются с помощью Razr, чего нет даже с S3.

Полезное видео здесь.

person jomike    schedule 15.08.2012

Поздно в игре, но могу подтвердить -

Если вашему периферийному устройству BLE требуется связывание, Moto X и некоторые другие старые устройства Motorola ДОЛЖНЫ быть сопряжены через настройки Bluetooth перед программным подключением через интерфейс Android GATT.

Если вы связываетесь с помощью метода createBond или читаете зашифрованную характеристику, ваше соединение обычно разрывается менее чем за 60 секунд, несмотря на то, что журналы DDMS, которые показывают хорошее соединение, могут быть установлены.

person Kevin    schedule 28.12.2016