Столкнулся с проблемой, что иногда BluetoothLeScanner не может ничего обнаружить примерно 10 или 20 секунд.
(эту проблему можно воспроизвести, запустив приведенный ниже код несколько раз, сканер некоторое время не будет работать)
bluetoothAdapter.getBluetoothLeScanner().stopScan(mScanCallback);
bluetoothAdapter.getBluetoothLeScanner().startScan(mScanCallback);
Я попытался перезапустить BluetoothLeScanner программно и вручную включить и выключить Wi-Fi + Bluetooth, но это не сработало, всегда нужно ждать 10 секунд или около того, пока система не обнаружит сигналы BLE.
В итоге я включил и выключил режим полета, и все работает отлично (работает каждый раз), мне не нужно ждать, просто включаю и выключаю, и система обнаружит сигнал BLE.
Я пытаюсь сделать кнопку, когда я нажимаю на нее, приложение будет включать и выключать режим полета, но это кажется невыполнимым для более поздней версии Android 4.2. Есть ли способ воспроизвести аналогичную функцию, которая работает как режим полета? (может почистить кеш?)
1 ответ
К сожалению, включение/выключение режима полета на Android v4.2 не поддерживается. Взгляните на ссылки ниже: -
- https://developer.android.com/about/versions/android-4.2.html
- Как программно включить/отключить режим полета
- Программная установка ВКЛ/ВЫКЛ авиарежима
Есть ли смысл использовать Android 4.2? Это очень устаревшая ОС (ей 10 лет), и с тех пор Android значительно улучшился, особенно когда речь идет о BLE API и функциональности. Если у вас есть возможность перейти на более новую ОС, я бы порекомендовал вам начать с этого в качестве первоочередной задачи.
Если обновление до более новой ОС невозможно, то я бы лично попытался решить реальную проблему, а не искать обходной путь. Одна из возможных причин этого заключается в том, что вы сканируете слишком часто, что иногда может привести к тому, что результаты сканирования не будут возвращены в течение примерно 30 секунд. Это сложная задача, так как ОС Android не возвращает ошибку — она просто не возвращает никаких результатов, которые кажутся похожими на то, что вы видите. Взгляните на эту ссылку и найдите строку «заметные ошибки сканирования». Я бы также посмотрел журнал Logcat, так как иногда там можно найти больше информации.
Наконец, возможно, что это какая-то проблема с железом (особенно если это старое устройство). Попробуйте установить nRF Connect и выполнить поиск устройств BLE. Если проблема существует и там, то это доказывает, что это проблема оборудования/устройства. Если проблема не существует там, то это проблема с вашим приложением.
Похожие вопросы
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .