Не удается запустить сканирование Wi-Fi и Bluetooth в фоновом режиме с помощью Flutter

Я работаю над частью проекта внутренней локализации. Мне нужно, чтобы мое приложение Flutter сканировало и получало адреса Mac и значения RSSI устройств Wi-Fi и Bluetooth. Я использую flutter_blue для сканирования Bluetooth и wifi_scan для сканирования Wi-Fi. Приложение работает хорошо, когда оно находится на переднем плане, но при сканировании происходит сбой, когда приложение находится в фоновом режиме.

Что я пробовал до сих пор:

  • Пытался изменить режим сканирования Bluetooth с ScanMode.lowLatency на ScanMode.lowPower и ScanMode.opportunistic для метода startScan() для flutter_blue.
  • flutter_background. Мне удалось выполнить некоторые задачи в фоновом режиме, но Wi-Fi и Bluetooth не работали.
  • flutter_background_service такая же ситуация
  • flutter_foreground_plugin такая же ситуация
  • flutter_foreground_task такая же ситуация
  • workmanager не пробовал, потому что он говорит, что может запускать операцию bg каждые 15 минут, но я сканирую каждые 6 секунд.

Есть ли способ добиться этого? Пакета с опцией backgroundMode: true нет? Я не знаю туземцев. Котлин тоже не знаю.

Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
1
0
136
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Согласно документации для разработчиков Android , ScanMode.lowPower — это единственно возможный режим фонового сканирования. Вам также необходимо запросить доступ к местоположению для фона (документация здесь и здесь).

Подумайте о переходе на Flutter Blue Plus вместо Flutter Blue; Flutter Blue Plus — это поддерживаемая в настоящее время версия. Этот запрос на включение на GitHub показывает, что Flutter Blue не может работать в фоновом режиме. Запрос на вытягивание никогда не объединялся.

Я пробовал это раньше, но, возможно, было что-то, что я пропустил. Так что попробую еще раз, спасибо

Baran 22.11.2022 13:54
Ответ принят как подходящий

После того, как было перепробовано много вещей, я просто попытался определить местоположение GPS.

Использовал этот пакет: местоположение

И выполнить location.enableBackgroundMode(enable: true) как написано в ридми, тогда у меня тоже начинает работать сканирование wifi и bluetooth в фоновом режиме.

Это Ридикулюс

Привет, я несколько дней пытаюсь заставить это работать. Я использую на Android 11 и 13: flutter_blue_plus: ^1.3.1 flutter_foreground_task: ^3.10.0 У меня есть все разрешения в файле манифеста, и он работает при включенном экране. У вас есть рабочий пример, я был бы очень признателен. Я тоже не могу заставить location работать в задаче переднего плана.

Jean G 07.12.2022 10:05

Другие вопросы по теме