Местоположение не обновляется после изменения местоположения в эмуляторе (Google Maps API) - PullRequest
1 голос
/ 03 апреля 2020

Я в настоящее время разрабатываю приложение, которое требует вашего текущего местоположения. Я использую API Карт Google, и моя проблема в том, что когда я запускаю приложение на реальном телефоне, оно дает правильное местоположение, но когда я использую эмулятор, оно продолжает указывать мне прошлое местоположение (которое я выбрал несколько дней go), а не текущего местоположения из эмулятора.

Я начинаю с вызова getLocationPermission() в onCreateView() (я делаю все это во фрагменте), и если это предоставляется, он вызывает getCurrentLocation() метод.

Я думаю, что метод работает нормально, но я не понимаю, почему расположение cu не меняется при изменении местоположения в эмуляторе.

Заранее спасибо, что нашли время, чтобы прочитать это!

PS: мой getCurrentLocation() метод такой:

private void getCurrentLocation() {
        mFusedLocationClient.getLastLocation().addOnCompleteListener(new OnCompleteListener<Location>() {
            @Override
            public void onComplete(@NonNull Task<Location> task) {
                List<Address> addresses;

                if (task.isSuccessful()) {
                    mLastLocation = task.getResult();
                    if (mLastLocation != null) {
                        Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault());
                        try {
                            addresses = geocoder.getFromLocation(mLastLocation.getLatitude(), mLastLocation.getLongitude(), 1);

                            if (addresses != null && addresses.size() > 0) {
                                Log.i("CURRENT LOCATION", addresses.get(0).getLocality() + ", " + addresses.get(0).getCountryName());
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                            Log.e("Getting current loc err", "Error at getting current location..");
                        }

                    } else {

                        //request for updated location
                        final LocationRequest locationRequest = LocationRequest.create();
                        locationRequest.setInterval(1000);
                        locationRequest.setFastestInterval(1000);
                        locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

                        locationCallback = new LocationCallback() {
                            @Override
                            public void onLocationResult(LocationResult locationResult) {
                                super.onLocationResult(locationResult);
                                if (locationResult == null) {
                                    return;
                                }
                                mLastLocation = locationResult.getLastLocation();
                                mFusedLocationClient.removeLocationUpdates(locationCallback);
                            }
                        };

                        mFusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper());
                    }
                } else {
                    //task was not successful
                    Log.e("NOT SUCCESSFUL", "Unable to get location");
                }
            }
        });
    }
...