BLE onClientConnectionState () status = 22 и status = 19 только при подключении к некоторым устройствам - PullRequest
0 голосов
/ 27 июня 2019

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

Проблема 1

Моя проблема возникает при подключении к плате Nordic во времяиспользуя S5.По существу, каждый раз, когда я подключаю другое устройство после подключения скандинавского устройства, оно отключается, и в журнале показывается:

onClientConnectionState () status = 22 * ​​1008 *

Из того, что я прочитал этоозначает, что ОС Android отключена от устройства, и я мало что могу сделать

Я могу подключиться к столько плат TI, сколько захочу (проверено 6), и могу подключить плату Nordic после, но как толькокогда я подключаю любое другое устройство, северная плата отключается.

Когда подключена северная плата, и я пытаюсь подключить другую северную плату, оба отключаются.

Выпуск 2

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

onClientConnectionState () status = 19

Из того, что я прочитал, это означает, что соединение с устройством BLE прекращеноИнтервал между подключением и отключением:

11:00:09.850 D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=7 device=F9:A2:E9:86:EC:82
11:01:09.730 D/BluetoothGatt: onClientConnectionState() - status=19 clientIf=7 device=F9:A2:E9:86:EC:82

11:04:20.270 D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=6 device=F9:A2:E9:86:EC:82
11:05:19.740 D/BluetoothGatt: onClientConnectionState() - status=19 clientIf=6 device=F9:A2:E9:86:EC:82

Вещи, которые я пробовал

Итак, моей первой идеей было выяснить, является ли это только моим приложением или, возможно, проблемой с устройством BLE.Я использую приложение nRF и подключен к плате Nordic, а затем подключен к нескольким другим устройствам.Это было нормально, я смотрел журнал и не отключался, и я мог слушать все характеристики с каждого устройства.

Так что я пришел к выводу, что я делаю что-то не так в своем приложении, так как это возможноподключите к нескольким устройствам после северной платы.Поэтому я начал анализировать, что я делаю в своем приложении.

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

После попытки выяснить, что вызывает это некоторое время, я решил попробовать на другом устройстве (более низкая спецификацияAndroid GO phone и Doogee x20 Android 7) и мое приложение работало совершенно нормально.Подключается к 2 платам Nordic, затем к нескольким платам TI, и они не отключаются.Многократное тестирование работает последовательно, как и должно быть, без проблем.

Иногда на S5 случается одна странность, я заставляю его работать, просто пытаясь соединиться, но это происходило только 2 раза, и я этого не делаля думаю подождать и посмотреть, отключатся ли северные платы через минуту, так как я еще не осознал этого 1-минутного выпуска.

Я только что проверил на другом S5, и он сработал с моей первой попытки, но не смогс тех пор.

Таким образом, рецепт для этого, кажется, выглядит так:

  • Samsung S5 (связано ли это с Android 5.0 или с конкретным устройством, я не уверен)
  • Скандинавские доски, но не TI
  • Мое приложение, но не nRF

Изменение любого из вышеперечисленных, и нет проблем

Редактировать: Яиспользуя это для подключения:

deviceEntry.gatt = device.connectGatt(this, false, GattCallback(this, deviceEntry))

deviceEntry - это просто класс, который я создал, чтобы удерживать BluetoothGatt и состояние вместе

1 Ответ

0 голосов
/ 28 июня 2019

Проблема была решена путем связи с устройством BLE.Не уверен, почему это было характерно для Samsung S5 и Nordic Board.Но все, что я сделал, это установил уведомления для характеристики, и она больше не отключалась.

...