Сканирование BLE: обратный вызов вызывается только один раз на "телефоне Huawei Ascend Mate2"
У меня есть работающее приложение сканирования BLE, которое отлично работает в течение последних нескольких месяцев на Nexus 5 (на различных версиях API от 4.4 до 6.0). Сегодня мы запустили приложение на другом устройстве "Huawei Ascend Mate2", которое имеет API 22, и обнаружили, что, как мне показалось, интересное или необычное поведение: обратный вызов срабатывает непрерывно (примерно трижды в секунду), но мой iBeacon обнаруживается только в одном обратном вызове и в оставшихся обратных вызовах он выбирает другие устройства в доме (например, маршрутизатор netgear, roku и т. д.; я не знаю, являются ли эти устройства netgear и rouku даже устройствами BLE). Мой код сканирования BLE очень похож на код, описанный здесь http://www.truiton.com/2015/04/android-bluetooth-low-energy-ble-example/
Эта ветка Android 4.4 BLE Scanning об отсутствии стабильности говорит о том, что BLE сканирование стабильно на 5.0+, но в моем случае это не так, потому что я использую API 22
Этот поток сканирования Android BLE Beacon на разных моделях телефонов предполагает, что нам нужно включать и выключать сканирование каждые 1,5 секунды, и это нецелесообразно в нашем случае использования, поскольку наше приложение должно работать по 10 часов каждый день (мы думаем, что запуск / остановка системный ресурс дорогая операция)
Я озадачен тем, почему один и тот же маяк обнаруживается при непрерывных обратных вызовах на Nexus 5 (протестировано как на Android 4.4, так и на 6.0 API); но при работе на "Huawei Ascend Mate2", хотя обратный вызов постоянно вызывается, тот же iBeacon обнаруживается только один раз, тогда как другие последующие устройства BLE обнаруживаются в последующих обратных вызовах.
Это первый раз, когда я тестировал за пределами Nexus. Кто-нибудь тестировал сканирование BLE на "Huawei Ascend Mate2"? Любые замечания и комментарии будут оценены.
"Huawei Ascend Mate2": номер модели устройства - MT2L03, а версия Android - 5.1.
1 ответ
Я работал с множеством разных устройств и могу вам сказать, что поведение на разных устройствах сильно отличается. У меня нет Huawei Mate2, но я мог наблюдать подобное поведение, когда вы получаете результаты сканирования только один раз для каждого устройства. Поэтому, если вам нужно иметь несколько результатов сканирования для одного и того же устройства, вам необходимо время от времени перезапускать сканирование. Я думаю, что 1,5 с - это слишком много, но это зависит от вашего варианта использования.