LocationRequest.PRIORITY_HIGH_ACCURACY не работает в API 21

Я пытаюсь включить настройки системы определения местоположения и установить для нее ВЫСОКАЯ ТОЧНОСТЬ. Код хорошо работает с 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.
                    }
                }
            }
        });

    }

LocationRequest.PRIORITY_HIGH_ACCURACY не работает в API 21Запрос API 25
LocationRequest.PRIORITY_HIGH_ACCURACY не работает в API 21Настройка API 25LocationRequest.PRIORITY_HIGH_ACCURACY не работает в API 21API 21 запросLocationRequest.PRIORITY_HIGH_ACCURACY не работает в API 21Настройка API 21

Как вы можете видеть в коде, я запросил

 mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

но похоже, что он не работает в API 21.

вы проверили с 21 устройством ??

curiousMind 30.07.2018 14:00

У меня та же проблема. Удалось ли вам решить эту проблему?

David 10.09.2018 08:26

Нет, проблема с эмулятором все еще существует, но код работает на физических устройствах. Так что волноваться не о чем :)

karatuno 11.09.2018 09:45
2
3
804
0

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