Многочисленные уведомления от устройств с низким энергопотреблением Bluetooth на Android - PullRequest
0 голосов
/ 11 июня 2018

Я столкнулся с проблемой уведомлений Bluetooth.У меня есть 2 датчика, к которым я подключаюсь.Каждый из них имеет несколько сервисов, каждый сервис имеет определенные характеристики.

Я подписываюсь на одну характеристику одной из услуг.Я делаю это для обоих датчиков.Каждый датчик посылает пакеты данных длиной 12 и 13 байтов один за другим непрерывно.

Я использую одну BluetoothManager, одну BluetoothAdapter, две BluetoothGatt переменные и две BluetoothGattCallback, каждаяопределенный для каждого датчика.

Я подключаюсь к первому датчику, уведомления приходят отлично, очень быстро 12-13-12-13-12-13 ... все хорошо!После того, как я подключился ко второму датчику, начинают поступать уведомления и от второго датчика 12-13-12-13-12-13.Но уведомления от первого датчика начинают иметь проблемы - я вижу только 13 пакетов данных.Что-то вроде «датчик 1 пакет 13 - датчик 2 пакет 12 - датчик 2 пакет 13 - отправитель 1 пакет 13 - датчик 2 пакет 12 - датчик 2 пакет 13 - отправитель 1 пакет 13» ... и т. Д.

Практически, пакет данных длиной 12 больше не приходит.Приложение на iOS работает отлично, поэтому проблема не в сенсорах, а в стеке Bluetooth.

Я пробовал с https://github.com/Polidea/RxAndroidBle - у меня была эта проблема.Затем я реализовал необработанное решение из https://developer.android.com/guide/topics/connectivity/bluetooth-le - у меня была та же проблема.Затем я попробовал библиотеку из https://github.com/NordicPlayground/puck-central-android.

Они пытались каким-то образом управлять проблемой с потоками (переопределяя многие методы и пытаясь синхронизировать потоки, чтобы избежать одновременного доступа), но по сути моя проблема былане решено.Даже используя их библиотеку, я все еще сталкиваюсь с такими же проблемами (https://github.com/NordicPlayground/puck-central-android/issues/4).

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

Я прочитал много статей о stackoverflow и других источниках, связанных с этой темой, я потратил более 2 недель на эту проблему и не смог найти решение.

Кто-нибудь сталкивался с такими же проблемами, пытаясь получать очень быстрые уведомления от двух устройств (подключенных одновременно) в пакетах данных с разной длиной?

1 Ответ

0 голосов
/ 11 июня 2018

Я подключился к трем устройствам и получил данные о характеристиках, данные были выставлены примерно 20 раз в секунду, тогда у меня не возникло никаких проблем с этим.Я столкнулся с проблемой, что телефон терял пакеты, кажется, проблема была в самом телефоне.Может быть, у вас проблема в самом телефоне.Какая у вас версия андроида?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...