Нужно ли для Android-приложения выполнять центральную и периферийную роли одновременно для отправки и получения данных через BLE?

В настоящее время я разрабатываю приложение, которое взаимодействует с одним оборудованием BLE, которое получает команды и отвечает на ответ команды. Для симуляции оборудования мы разработали одно приложение iOS Simulator, которое работает на периферии и отвечает на запрошенную команду. Но как-то, как и когда я пытаюсь написать характеристики записи, я получил status = BluetoothGatt .GATT_REQUEST_NOT_SUPPORTED в onCharacteristicWrite Перезвоните. Но каким-то образом я узнал, что нам нужно внедрить центральные и периферийные роли в приложение для Android.

Но я все еще не уверен, нужно ли нам также реализовывать периферийную роль для отправки и получения данных в нескольких пакетах.

Я разрабатываю приложение, используя следующий хороший пост в блоге:
- https://medium.com/@avigezerit/bluetooth-low-energy-on-android-22bc7310387a- https://android.jlelse.eu/android-bluetooth-low-energy-communication-simplified-d4fc67d3d26e- https://www.bignerdranch.com/blog/bluetooth-low-energy-on-android-part-2/

И используя следующий репо в качестве учебной точки зрения:
- https://github.com/bignerdranch/android-bluetooth-testbed/tree/a/android-ble-part-3

Заранее спасибо!

2 ответа

Обычно ваше телефонное приложение является центральным и связывается с периферийным устройством через Bluetooth. Если вы хотите отправить данные на периферийное устройство, вы можете записать характеристику в телефонном приложении, если для этой характеристики включена запись. Ваш центральный узел может получать данные от периферийного устройства двумя способами: он может либо считывать характеристику (если он включен) с периферийного устройства, либо получать уведомления от периферийного устройства (если он включен). Таким образом, если все, что у вас есть, это центральное (телефонное приложение) и периферийное устройство (какое-то устройство Bluetooth), и вы хотите отправлять данные туда и обратно, вам не нужно иметь как центральные, так и периферийные роли в телефонном приложении. Если у вас есть какие-то особенные вещи, они могут отличаться для вас, я не знаю. Я говорю о типичной настройке.

Если вы хотите отправить команды на периферийное устройство, вы можете написать эти команды для характеристики. В свою очередь, периферийное устройство может отвечать уведомлениями. Это в основном способ, которым я разрабатываю решение Bluetooth, но оно может отличаться в зависимости от того, чего вы хотите достичь.

Требуется два устройства, чтобы общаться друг с другом.

Устройство A: Это будет периферийное устройство, которое будет рекламировать данные. т.е.: маяки, оборудование BLE

Устройство B: Это будет центральное устройство, которое отправит запрос на чтение, запись. то есть: мобильный

Настройка для устройства A:

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

Поэтому перед началом вы можете просто проверить это с помощью следующего приложения: https://play.google.com/store/apps/details?id=com.kyriakosalexandrou.bluetoothsupportcheck

Чтобы ваше устройство работало как периферийное устройство, вы можете установить следующее приложение, которое просто имитирует GATT и рекламу: https://play.google.com/store/apps/details?id=com.ble.peripheral.sim

Важное замечание: Настройте службу и характеристики в соответствии с вашими требованиями, убедитесь, что характеристика включена для записи, если вы хотите записать в нее данные.

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