Я в настоящее время разрабатываю приложение, которое требует вашего текущего местоположения. Я использую 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");
}
}
});
}