Я использую сетевой код для определения местоположения GPS:
mLocationRequest = new LocationRequest();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
LocationSettingsRequest locationSettingsRequest = builder.build();
SettingsClient settingsClient = LocationServices.getSettingsClient(this);
settingsClient.checkLocationSettings(locationSettingsRequest);
getFusedLocationProviderClient(this).requestLocationUpdates(mLocationRequest, new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
onLocationChanged(locationResult.getLastLocation());
}
},
Looper.myLooper());
Все работает хорошо, за исключением того, что если на моем устройстве отключена служба определения местоположения, getFusedLocationProviderClient откроет диалоговое окно и скажет, что устройству нужен Wi-Fi, сотовая сеть и датчики.Я согласен, и приложение активирует службу определения местоположения, но с настройками низкого энергопотребления (режим экономии заряда батареи).
Что я делаю не так?Похоже, датчик GPS не активирован, потому что мое местоположение отображается далеко от моего реального местоположения.Если я делаю ручные настройки, все они работают как шарм.