В моем приложении люди размещают объявления, которые могут видеть другие. Они фильтруются с использованием расстояния между создателем объявления и парнем, который его читает. Если кто-то разместит объявление, я должен быть уверен, чтобы узнать его местоположение. Если кто-то ищет объявление, я должен быть уверен, что его местоположение будет сортировать объявления.
В моем коде у меня есть способ получить местоположение, но иногда он возвращает ноль.
Вот небольшой код (я проверил разрешение et c)
FusedLocationProviderClient mFusedLocationProviderClient;
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context);
try{
if(mLocationPermissionsGranted){
final Task location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful()){
Log.d(TAG, "onComplete: found location!");
Location currentLocation = (Location) task.getResult();
if (currentLocation != null)
{
double Latit = currentLocation.getLatitude();
double Longit = currentLocation.getLongitude();
LatLng latLong = new LatLng(Latit, Longit);
//TODO do something with latlong
}
}else{
Log.d(TAG, "onComplete: current location is null");
Toast.makeText(context, "unable to get current location", Toast.LENGTH_SHORT).show();
}
}
});
}
}catch (SecurityException e){
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage() );
}
Но иногда Location currentLocation = (Location) task.getResult();
возвращает ноль, даже если задача успешна. Я действительно не знаю почему. Я хотел бы знать, есть ли надежный способ получить местоположение всякий раз, когда я спрашиваю его (это местоположение включено на телефоне, конечно). Спасибо