Я использую 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));
}
});
}
}
});
}