Как обновить сервисы / очистить кеш? - PullRequest
0 голосов
/ 07 июня 2018

На некоторых устройствах Android (независимо от версии ОС или Bluetooth) возникает проблема после подключения устройства BLE.Услуги / характеристики не актуальны.Обычно это происходит, когда периферийное устройство меняет свои услуги.(пока приложение не было подключено)

В этом состоянии невозможно использовать устройство.Чтобы проверить эту проблему, вы можете обнаружить все характеристики и увидеть, что из кэша устройства Android загружены устаревшие (более не существующие) характеристики.

Текущее решение (не программно) Сброс состояния включения Bluetooth в ОСсистемные настройки андроида.(выключите и включите состояние Bluetooth)

Также в приложении nRF Connect есть функция под названием Refresh services

(игнорировать «Анализировать известные характеристики». Это непроблема) Этот проект (nRF Connect) не является открытым исходным кодом.Я не знаю, как «Обновить службы» / «Очистить кэш», чтобы избежать загрузки неправильных служб / характеристик при подключении.

Как реализовать это в Android (Java)?

Справочная информация: я использую ионный с родным плагином ble.Я мог бы реализовать собственный код прямо в плагине.

1 Ответ

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

Обычно Android не должен кэшировать несвязанные устройства.НО это игнорирует правило.Чтобы обновить кэш, вызовите скрытый метод, используя отражения.

import java.lang.reflect.Method;

Сделайте это в методе:

try {
  // BluetoothGatt gatt
  final Method refresh = gatt.getClass().getMethod("refresh");
  if (refresh != null) {
    refresh.invoke(gatt);
  }
} catch (Exception e) {
  // Log it
}

Пример использования:

Если вы видите проблемус характеристическим кешем.

  1. Вызовите метод для очистки кеша.(Подождите несколько секунд).
  2. Переподключиться (Отключить -> Подключить).

Теперь необходимо исправить.

ПРИМЕЧАНИЕ. Метод обновления не имеет полного обратного вызова.

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