Можно ли использовать библиотеку AltBeacon, чтобы разбудить мое приложение, как только в радиусе действия появится маяк, даже на Android 8+? - PullRequest
0 голосов
/ 03 мая 2019

Я хочу закодировать приложение, которое устанавливает пользователь, а затем забывает об этом. Когда его / ее смартфон на Android обнаруживает маяк на улице (меня не волнует расстояние, мощность RSSI, ...), он запускает мое приложение. Есть ли способ реагировать, как только маяк будет обнаружен, не разряжая батарею или не сканируя каждые 15 минут или около того в Android 8+? Что произойдет, если пользователь движется по улице, где расположены 2+ маяка? Может ли он / она обнаружить другие, как только он / она приближается к ним? Может ли библиотека AltBeacon удовлетворить мои потребности?

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

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

Итак, прежде чем я углублюсь в изучение Java и Android Studio (я обычно пишу в Delphi), я хочу убедиться, что:

1) Может ли мое приложение обнаружить маяк X в магазине A и через 2 минуты, когда пользователь переходит улицу и подходит ближе к магазину B, также обнаружить его маяк Y? Поможет ли мне 15-минутное ограничение обнаружить маяк Y (и все остальные)?

2) Меня не волнует расстояние между пользователем и магазинами: если мое приложение «видит» маяк X, достаточно вызвать уведомление о предложении. Будет ли это требование разряжать батарею телефона пользователя?

С уважением, Filippo

Большое спасибо, Filippo

1 Ответ

0 голосов
/ 03 мая 2019

Да, библиотека Android Beacon делает именно то, что вы описываете из коробки.Вы можете проверить его с помощью справочного приложения .

Первые обнаружения в фоновом режиме обычно выполняются через 0-5 секунд , даже на Android 8+.

Поведение по умолчанию на Android 8+ - , чтобы проводить полное полное сканирование BLE в течение нескольких секунд каждые 15 минут, что поверх постоянного сканирования с низким энергопотреблением на основе аппаратного фильтра.,Тесты показывают, что при этом расходуется очень мало заряда батареи, и пользователи обычно не замечают, что он активен.

Из-за ограничений фоновой работы в Android 8+ существует ограничение на быстрое обнаружение нескольких отдельных маяков в фоновом режиме.правопреемство.Вообще говоря, готовая библиотека не будет обнаруживать новый сигнал маяка чаще, чем раз в 15 минут.Существуют способы настроить библиотеку для поддержки обнаружения большего количества, но они требуют запуска службы переднего плана в течение 15 минут после первого обнаружения маяка, чтобы обнаружить дополнительные маяки, пока не начнется следующий 15-минутный цикл.

Применяются вышеуказанные ограничениякак в библиотеку Android Beacon, так и в любой подобный SDK с использованием сканирования Android BLE.См. здесь , чтобы узнать, почему это так.

Однако имейте в виду, что некоторые китайские OEM-производители Android встраивают в свои телефоны фирменные функции энергосбережения, которые могут предотвратить любой долгосрочный фон.работать, если вы не можете каким-то образом получить ваше приложение в белый список от китайского OEM.См. здесь для получения дополнительной информации.

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