2013-12-09 3 views
6

Я написал свою собственную небольшую службу сканирования BLE, которая запускается через будильник каждые 3-5 секунд. Он сканирует на 1,1 секунды, чтобы получить маяки вокруг него, а затем трансформирует сигнал RSSI в приблизительную близость.iBeacon background scan

Я сейчас рассматриваю услугу iBeacon для Radius Networks Android, но мне интересно, как я мог бы реализовать одно и то же фоновое сканирование.

e.g .: Я хочу, чтобы маяки запускались в фоновом режиме и принимали намерения в приемник вещания, чтобы решить, что я делаю с проверенными маяками.

Есть ли примеры примеров и есть ли подсчет количества потребляемой батареи?

ответ

8

Radius Networks 'Android iBeacon Library делает именно это. Все, что вам нужно сделать, чтобы запустить его в фоновом режиме, - связать IBeaconManager с чем-то длинным жизненным циклом. Это может быть пользовательский объект android.app.Application или собственный сервис. Поскольку вы уже написали свой собственный сервис для своего приложения, вы можете легко связать IBeaconManager с этой службой, и он останется активным в фоновом режиме, пока работает сервис. Вы также можете использовать свою услугу для отправки трансляционных намерений, если хотите, но для большинства случаев использования это, вероятно, не требуется.

Что касается использования аккумулятора, то в библиотеке reference application приведен пример того, как установить фоновый режим в библиотеке, чтобы сканирование случалось реже, экономя батарею. Соответствующий код в этом приложении эталонным здесь:

@Override 
    protected void onPause() { 
      super.onPause(); 
      if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this, true);      
    } 
    @Override 
    protected void onResume() { 
      super.onResume(); 
      if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this, false);      
    } 

Установка режима фона истина уменьшает Bluetooth сканирование произойдет только один раз очень 5 минут - что-то похожее на то, что делает IOS. Основываясь на тестах на Nexus 4, это уменьшает общий расход батареи телефона от 95 мА до 55 мА (оба из которых включают в себя общий слив операционной системы.)

Полное раскрытие: я работаю ради Radius Networks и являюсь основным автором Android iBeaconLibrary.

+0

Hi David, много thx для ваших комментариев. Для моей конкретной демонстрации я пошел со службой и сигналом тревоги сейчас, но я бы полностью пошел с вашим API иначе. –

+0

Я нашел класс IBeacon и метод scanFromRecord очень полезен. Единственное, что я не могу понять, это то, что делает линия 216. По-видимому, обнаружен маяк оценки, но затем он вернет «пустой» класс IBeacon почти. Это старый код? Я только что получил iBeacons от оценки, и он работает. Кстати, я хотел бы связаться с вами и попробовать ваши маяки и устройства. Как мы можем напрямую подключиться? –

+0

Понял о вашей демонстрации. это проект с открытым исходным кодом, поэтому я всегда ищу работу со своими сотрудниками. Возможно, мы, – davidgyoung

Смежные вопросы