Не получается местоположение в Android 8.0.0 Oreo - PullRequest
0 голосов
/ 27 сентября 2018

Я создаю приложение в React-Native и мне нужен доступ к местоположению в соответствии с требованием.

Я попытался использовать react-native-fused-location для того же, что и ниже.

           FusedLocation.setLocationInterval(20000);
           FusedLocation.setFastestLocationInterval(15000);
          FusedLocation.setSmallestDisplacement(10);

          FusedLocation.setLocationPriority(
            FusedLocation.Constants.HIGH_ACCURACY
          );
          FusedLocation.startLocationUpdates();


          FusedLocation.getFusedLocation().then(location => {

            if (location != null) {
              let initialPosition = JSON.stringify(location);
              this.state.latitude = location.latitude;
              this.state.longitude = location.longitude;
              this.state.timestamp = location.timestamp;
              this.state.initialPosition = initialPosition;


            } else {
              alert("Location unavailable, please try later");
            }
          }).catch(error => {  // fused location catch
             console.log("location retrieval failed");
          });

Единственный вывод, который я получаю с вышеуказанным кодом, в случае Oreo 8.0.0 - это E / request: 100 .

также пробовал другойкак показано ниже

navigator.geolocation.watchPosition(
            location => {
              console.log("inside watchPosition location");
              if (location != null) {
                console.log("location is not null");
                let initialPosition = JSON.stringify(location.coords);
                this.state.latitude = location.coords.latitude;
                this.state.longitude = location.coords.longitude;
                this.state.timestamp = location.coords.timestamp;
                this.state.initialPosition = initialPosition;


              } else {
                alert("Location unavailable, please try later");
              }
            },
            error => {
              console.log("calling ShowHideActivityIndicator,  getLocationWithNavigate (ios)");

              this.ShowHideActivityIndicator(false);
              alert("location retrieval failed");
              console.log(error);
            },
            { timeout: 20000, enableHighAccuracy: true, distanceFilter: 10 }
          );

Но при получении одинаковых выходных данных в обоих вышеприведенных кодах невозможно получить конкретное местоположение в Android Oreo 8.0.0 .Даже обратный вызов для определения местоположения даже не вызывается.Хотя в других версиях, включая Oreo 8.1.0 , и в устройствах более низкой версии, включая Marshmallow и Nougat, все работает нормально.

Хотя, если я включу фальшивый GPS в Oreo 8.0.0 , то, похоже, он сможет определить местоположение.Я не могу понять, чего мне не хватает.

1 Ответ

0 голосов
/ 17 марта 2019

упоминание в документе Google:

В целях снижения энергопотребления Android 8.0 (уровень API 26) ограничивает частоту, с которой фоновые приложения могут извлекать текущее местоположение пользователя.Приложения могут получать обновления местоположения только несколько раз в час. Фоновые ограничения местоположения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...