Я пытаюсь точно выяснить, что делает Android на фоне переподключения на BLE.Например, если я запускаю connectGatt () с autoConnect, установленным в true, как часто Android ищет это?Как насчет того, когда мое приложение находится на переднем плане?Фон?Есть ли способ манипулировать этим параметром?
На данный момент я обнаружил:
http://androidxref.com/9.0.0_r3/xref/packages/apps/Bluetooth/src/com/android/bluetooth/gatt/ScanManager.java#490
Однако они разделены на "SCAN_MODE" и"SCAN_MODE_BATCH", но я не могу понять, когда используется каждый из них.Я также не могу понять, какой режим сканирования используется для фонового переподключения.
Самая близкая вещь, которую я нашел к фактической информации, была такой:
https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_LOW_POWER
Этоговорит, что все сканы, когда приложение установлено на фон, выполняется с низким энергопотреблением.Но включает ли это повторное сканирование?И какой режим с низким энергопотреблением это?SCAN_MODE_LOW_POWER_INTERVAL_MS
- это всего 5 секунд, а SCAN_MODE_BATCH_LOW_POWER_INTERVAL_MS
- 150 секунд !!Это большая разница, и это может немного повлиять на приложение, пытающееся повторно подключиться к устройству.
В любом случае, я пытался прочитать код, но не мог точно понять, что происходит.Любое понимание того, как это работает, было бы полезно.
Причина, по которой я спрашиваю, заключается в том, что у меня иногда возникают проблемы с повторным подключением к устройству, но устройство просыпается только на 30 секунд за один раз для рекламы.Если интервал сканирования Android составляет 150 секунд, они могут легко пропустить друг друга таким образом.Приветствуется любая помощь, а также другие причины, по которым переподключение может быть неудачным (обратите внимание - это работает на 100% в iOS).