Я пытаюсь включить настройки системы определения местоположения и установить для нее ВЫСОКАЯ ТОЧНОСТЬ. Код хорошо работает с API выше 21, когда я нажимаю OK, параметр местоположения включен и установлен на ВЫСОКАЯ ТОЧНОСТЬ, но для API 21 и ниже это местоположение включено, но установлено на BATTERY SAVER.
public class MainActivity extends AppCompatActivity {
LocationRequest mLocationRequest;
private static final int REQUEST_CHECK_SETTINGS = 0x1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("LogCheck", "createLocationRequest");
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(2000);
mLocationRequest.setFastestInterval(2000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
SettingsClient client = LocationServices.getSettingsClient(this);
Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());
task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() {
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
});
task.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if (e instanceof ResolvableApiException) {
// Location settings are not satisfied, but this can be fixed
// by showing the user a dialog.
try {
// Show the dialog by calling startResolutionForResult(),
// and check the result in onActivityResult().
ResolvableApiException resolvable = (ResolvableApiException) e;
resolvable.startResolutionForResult(MainActivity.this,
REQUEST_CHECK_SETTINGS);
} catch (IntentSender.SendIntentException sendEx) {
// Ignore the error.
}
}
}
});
}
Запрос API 25
Настройка API 25
API 21 запрос
Настройка API 21
Как вы можете видеть в коде, я запросил
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
но похоже, что он не работает в API 21.
У меня та же проблема. Удалось ли вам решить эту проблему?
Нет, проблема с эмулятором все еще существует, но код работает на физических устройствах. Так что волноваться не о чем :)
вы проверили с 21 устройством ??