С недавнего выпуска Android 5.0 Lollipop я испытываю очень плохую производительность Bluetooth Low Energy API в своем устройстве Nexus 4. С предыдущей версией ОС (Android 4.4.4 Kit-Kat) она работала как шарм, а одно и то же приложение, запущенное в версии 5.0, имеет следующее поведение:
-
Часто он не обнаруживает рекламный пакет от периферии.
ADVERTISING_INTERVAL периферийного устройства - 20 мс, поэтому приложение должно обнаруживать хотя бы одну рекламу в 60 мс в худшем случае. Я попытался с
BluetoothLeScanner
(с настройками SCAN_MODE_LOW_LATENCY) не использовать устаревшийmBluetoothAdapter.startLeScan(mLeScanCallback)
без успеха. -
Когда это происходит, когда я пытаюсь подключиться к серверу GATT, он редко делает.
Я проверил с помощью анализатора BLE, что пакет CONNECTION_REQUEST даже не отправляется на периферию.
Кажется, я не единственный, у кого такие ошибки, а некоторые другие пользователи разместили похожие вопросы. Кто-нибудь знает, что произошло?
-
Обновление 1: (2014/12/17)
Я также протестировал одно и то же приложение с помощью Lollipop с Nexus 5 и редко подключается к серверу GATT. Каждый раз, когда я отправляю запрос на соединение, он никогда не делает этого, потому что периферийное устройство не получает пакет. Прежде чем обновлять этот Nexus 5 до Lollipop, он отлично работал на Kit-Kat 4.4.4.
Обновление 2: (2014/12/17)
Android 5.0.1 не решает проблему вообще.
Обновление 3: (2015/04/23)
Android 5.1 также не решает проблему. Сегодня у меня была возможность протестировать Android 5.0.1 на SAMSUNG Galaxy S4, и он отлично работает. Я также тестировал Nexus 5 со свежей установкой Android 5.1, и он отлично работает. Проблема все еще остается в Nexus 4. Они сделали что-то странное на прошивке Android 5.0 и последующих версиях, которые нарушили идеальную совместимость Android 4.4.4 с API Bluetooth.