Bootstrapnotifier не распознает добавленные позже маяки | Android-Beacon-Library

#android #android-bluetooth #ibeacon-android #altbeacon #android-ibeacon

#Android #android-bluetooth #ibeacon-android #altbeacon #android-ibeacon

Вопрос:

Я работаю с Android-Beacon-Library для сканирования маяков и отображения информации. В фоновом режиме я хочу отправлять уведомления пользователю. Но я столкнулся с проблемой во время разработки.

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

Это мой код:

В моих приложениях метод onCreate:

 mRegionBootstrap = new RegionBootstrap(this, new ArrayList<Region>());
  

после того, как я узнаю маяки, просмотрите мой список и добавьте их:

 for(BeaconModel beacon : mBeaconList) {
   mRegionBootstrap.addRegion(new Region(beacon.getId(),
   Identifier.parse(beacon.getUuid()), 
   Identifier.fromInt(beacon.getMajor()),    
   Identifier.fromInt(beacon.getMinor())));
}
  

Во время выполнения все работает нормально, маяки найдены, и я могу отображать информацию.

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

Я думаю, что фоновая служба ищет только массив в конструкторе.

Есть ли способ добавить маяки позже в фоновую службу?

Ответ №1:

Вы можете использовать этот mRegionBootstrap.addRegion(...) метод, но только после установления соединения со службой beacon, в противном случае вызов игнорируется, и вы увидите Can't add bootstrap region в журналах.

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

Возможно, вы можете просто отложить создание RegionBootstrap , пока не узнаете свои регионы. Нет причин создавать его раньше.

Комментарии:

1. Спасибо за ваш быстрый ответ. Я попытался создать Regionbootstrap позже, когда я знаю свои регионы. Но затем я столкнулся с другой проблемой: при первом запуске приложения все работает нормально, но во второй раз я больше не нашел маяков, вместо этого состояние для каждого маяка в диапазоне было установлено равным 0. Я нашел другое решение своей проблемы. Когда я создаю Regionbootstrap с пустой областью вместо пустого списка, он работает.