Как узнать местоположение устройства телефона с помощью FusedLocationProviderClient - PullRequest
0 голосов
/ 19 мая 2019

Я использую FusedLocationProviderClient, чтобы получить местоположение устройств при активации датчика приближения. Когда пользователь приближается к датчику приближения, программа должна получить местоположение устройства, однако оно не доходит до необходимого кода, потому что я думаю, что оно застревает в операторе .isSucessful () if.

private FusedLocationProviderClient mFusedLocationProviderClient;    
private void getDeviceLocation() {
    mFusedLocationProviderClient = 
LocationServices.getFusedLocationProviderClient(this);
    try {
        if ( ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED ) {
            return;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
        final Task location = mFusedLocationProviderClient.getLastLocation();
        Log.d("Works to here:","here");
        location.addOnCompleteListener(new OnCompleteListener() {
            @Override
            public void onComplete(@NonNull Task task) {
                if ( task.isSuccessful() ) {
                    Location currentLocation = (Location) task.getResult();

                    double lat = currentLocation.getLatitude();
                    double lon = currentLocation.getLongitude();
                    Log.d("workes to here:",String.valueOf(lat));

                    addMarker(lat, lon);
                    final LatLng sydney = new LatLng(lat, lon);
                    mapFragment.mapView.getMapAsync(new OnMapReadyCallback() {
                        @Override
                        public void onMapReady(GoogleMap googleMap) {
                            googleMap.addMarker(new MarkerOptions().position(sydney));
                        }
                    });
                }

            }

        });
}

1 Ответ

0 голосов
/ 19 мая 2019

Не используйте getLastLocation.Он почти всегда возвращает ноль, потому что он не находит местоположение, он возвращает только один, если местоположение уже было кэшировано.Вместо этого используйте requestLocationUpdates, чтобы получить местоположение для обратного вызова, когда оно станет доступным.

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