Я получаю координаты с помощью FusedLocationProviderClient в моем приложении одним нажатием кнопки для сохранения в базе данных.Проблема в том, что когда я перезагружаю телефон или эмулятор, .getLastLocation()
становится пустым, и мне нужно в другой раз нажать кнопку, которую я заказываю, чтобы это работало.Есть ли способ заставить получить текущую позицию, если значение location from .lastKnownPosition()
равно нулю?
// Google fused location client for GPS position
private FusedLocationProviderClient flpc;
// Vars to store GPS info
public Double latitude, longitude;
public Float accuracy;
// Google Fused Client for location
public void getLocation() {
// FusedLocationProviderClient
flpc = LocationServices.getFusedLocationProviderClient(context);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
......
return;
}
// Get the latest position from device
Task<Location> task = flpc.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location!=null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
accuracy = location.getAccuracy();
}
}
});
}
В моем обработчике кнопок я вызываю getLocation()
и использую широту, долготу и точность для сохранения вбаза данных.
Любая помощь приветствуется!