фоновое сканирование iBeacon

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

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

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

есть ли примеры soem и есть ли оценка, сколько батареи это потребляет?

1 ответов


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

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

    @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);                    
    } 

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

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