Как отслеживать местоположение в фоновом режиме с помощью Flutter?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как отслеживать местоположение в фоновом режиме с помощью Flutter?

Сообщение Anonymous »

Я работаю в команде, разрабатывающей приложение на Flutter. Нам нужно отслеживать пройденное расстояние с помощью GPS, но проблема в том, что Flutter больше не позволяет отслеживать местоположение как на переднем, так и на заднем плане (даже с грубым уровнем точности).
Основываясь на обзоре последних рекомендаций Google, кажется, что Google должен разрешить нашему приложению отслеживать устройство, когда оно находится в фоновом режиме, но это не так. Фактически, включение служб определения местоположения на переднем и заднем плане, казалось, работало месяц или два назад. Мы попробовали пакеты местоположения и геолокации, но безрезультатно. Любой из них немедленно прекращает отслеживание, когда приложение находится в фоновом режиме, и мы получаем резкий скачок местоположения, когда приложение возвращается на передний план.
Вот что мы попробовали
AndroidManifest.xml

Код: Выделить всё

...


...

Код приложения с использованием геолокации

Код: Выделить всё

...
serviceEnabled = await Geolocator.isLocationServiceEnabled();
if (!serviceEnabled) {
return Future.error('Location services are disabled.');
}

permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) {
return Future.error('Location permissions are denied');
}
}

//Permission returns denied Location
//this is due to the background permission in the android manifest
//turn off background permission and the permission is allowed
if (permission == LocationPermission.deniedForever)
return Future.error(
'Location permissions are permanently denied, we cannot request permissions.');
}
...
Код приложения с использованием местоположения

Код: Выделить всё

_serviceEnabled = await location.serviceEnabled();
if (!_serviceEnabled) {
_serviceEnabled = await location.requestService();
if (!_serviceEnabled) {
print('Service could not be enabled');
return false;
}

// This code throws and exception even if I respond to the
// Google prompts and I select allow location service and all the time access
try {
await location.enableBackgroundMode(enable: true);
} catch(error) {
print("Can't set background mode");
}
Будем очень признательны за любые рекомендации о том, как этого добиться.

Подробнее здесь: https://stackoverflow.com/questions/685 ... th-flutter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»