Получить местоположение пользователя с «Device Only» в Android - PullRequest
0 голосов
/ 26 февраля 2019

Контекст:

Я использовал FusedLocationProviderClient, чтобы узнать местоположение пользователя.Когда телефон находится в режиме высокой точности, все работает как положено.Однако не все телефоны имеют высокую точность.Итак, как мне получить местоположение пользователя только по GPS

Что я пробовал до сих пор:

1 - пробовал с помощью FusedLocationProviderClient:

 providerClient = LocationServices.getFusedLocationProviderClient(this);

locationCallback = new LocationCallback() {
            @Override
            public void onLocationResult(LocationResult locationResult) {
                super.onLocationResult(locationResult);
                Log.e(TAG,"CALLBACK RECEIVED");
                processNewLocation(locationResult.getLastLocation());
            }
        };

locationRequest = new LocationRequest();
locationRequest.setInterval(LocationConstant.UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setFastestInterval(LocationConstant.FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

providerClient.requestLocationUpdates(locationRequest,
                    locationCallback, Looper.myLooper());

Когда местоположение находится в Device Only, обратный вызов местоположения никогда не вызывается, но работает отлично, если он с высокой точностью (также изменено setPriority() для каждого приоритета и не повезло).

2-пробовал это с Location Manager:

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new MyLocationListener());
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new MyLocationListener());
locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0, new MyLocationListener());

 private class MyLocationListener implements LocationListener {

        public void onLocationChanged(Location location) {
            String message = String.format(
                    "New Location \n Longitude: %1$s \n Latitude: %2$s",
                    location.getLongitude(), location.getLatitude()
            );
            Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
        }

        public void onStatusChanged(String s, int i, Bundle b) {
            Toast.makeText(MainActivity.this, "Provider status changed",
                    Toast.LENGTH_LONG).show();
        }

        public void onProviderDisabled(String s) {
            Toast.makeText(MainActivity.this,
                    "Provider disabled by the user. GPS turned off",
                    Toast.LENGTH_LONG).show();
        }

        public void onProviderEnabled(String s) {
            Toast.makeText(MainActivity.this,
                    "Provider enabled by the user. GPS turned on",
                    Toast.LENGTH_LONG).show();
        }

    }

Все тот же результат

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