как сделать BLE автоподключением к Bluetooth android телефону без сопряжения - PullRequest
0 голосов
/ 04 мая 2020

У меня Arduino с BLE, который должен отправить некоторые данные на любой / все android телефоны через Bluetooth в своем диапазоне. На моем android телефоне должно быть приложение, которое я собираюсь сделать, будет уведомлять о полученных данных.

Как я могу создать такое приложение android, которое автоматически подключается к любой соседней BLE, если оно найдено без сопряжения даже для Первый раз и обмен данными. Я имею в виду, как в любом приложении я могу реализовать автоматическое подключение без сочетания клавиш. Я обнаружил, что настройка autoconnect = true будет выполнять эту задачу, но я не уверен. Любая помощь, даже какой-то ресурс я буду ссылаться и прояснить мои сомнения.

1 Ответ

0 голосов
/ 04 мая 2020

Предварительными условиями и шагами являются (фрагменты кода в Java):

  • H C -XX или подобное BLE-устройство на стороне Arduino, установленное в режим безопасности 1 и уровень безопасности 1 (без защиты и без сопряжения)
  • Android 4,3 (уровень API 18) со встроенной платформой для поддержки Bluetooth Low Energy (BLE)
  • Проверить устройство (мобильное), для которого включен BLE

    // Ensures Bluetooth is available on the device and it is enabled. If not,
    // displays a dialog requesting user permission to enable Bluetooth.
    if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) {
         Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    }
    
  • Найдите устройства BLE. Вы используете метод startLeScan(). Этот метод принимает BluetoothAdapter.LeScanCallback в качестве параметра. Вы должны реализовать этот обратный вызов, потому что именно так возвращаются результаты сканирования. Поскольку сканирование требует много батареи, вы должны соблюдать следующие рекомендации:

    • Как только вы найдете нужное устройство, прекратите сканирование.
    • Никогда не сканируйте на всех oop, и установить ограничение по времени вашего сканирования. Возможно, ранее доступное устройство вышло за пределы диапазона и при продолжении сканирования разряжает батарею.
  • Если вы хотите сканировать только определенные типы периферийных устройств c вместо этого вы можете вызвать startLeScan(UUID[], BluetoothAdapter.LeScanCallback), предоставив массив объектов UUID, которые определяют службы GATT, поддерживаемые вашим приложением.

  • Первый шаг во взаимодействии с устройством BLE - подключение к нему. более конкретно, подключение к серверу GATT на устройстве. Чтобы подключиться к серверу GATT на устройстве BLE, вы используете метод connectGatt(). Этот метод принимает три параметра: Context object, autoConnect (логическое значение, указывающее, следует ли автоматически подключаться к устройству BLE, как только оно станет доступным), и ссылка на BluetoothGattCallback.

    // Here we set autoconnect to true
    bluetoothGatt = device.connectGatt(this, true, gattCallback); 
    
    * 1037. *

Подводя итог, автоматическое подключение не будет выполнять работу, так как вы не хотите, чтобы сопряжение. Таким образом, режим безопасности 1 и уровень безопасности 1 (без защиты вообще) должны быть установлены. Поэтому убедитесь, что с помощью программного обеспечения двустороннего шифрования / автоматического входа в систему никакие посторонние лица не используют ваше устройство

Подробнее о BLE см. В Android здесь
Читать подробнее о безопасности BLE здесь

...