Как узнать мое последнее местоположение в android?

Я хочу знать, как я могу узнать свое последнее известное местоположение (при наличии GPS или сети). Я спрашиваю об этом, потому что знаю, как узнать свое местоположение, но оно будет периодически обновляться, и я хочу его только один раз, и больше ничего.

Вот мой реальный код:

@Override
public void onLocationChanged(Location location) {
    Toast.makeText(getContext(),"Cambio posicion "+location.getProvider(),Toast.LENGTH_SHORT).show();

     this.marca.title("Mi ubicacion");
     this.marca.position(new LatLng(location.getLatitude(),location.getLongitude()));

     mMap.addMarker(this.marca);

     this.camara = CameraPosition.builder()
             .bearing(0)
             .zoom(15)
             .target(new LatLng(location.getLatitude(),location.getLongitude()))
             .tilt(30)
             .build();

     mMap.animateCamera(CameraUpdateFactory.newCameraPosition(this.camara));


}

Я использую LocationManager. Спасибо за вашу помощь.

2
0
644
2

Ответы 2

Если вы используете LocationManager и просто хотите получить последнее местоположение однажды. Вы можете удалить обновление местоположения прослушивания после первого onLocationChanged, например

@Override
public void onLocationChanged(Location location) {

   mLocationManager.removeUpdates(mListener);
}

Еще одно решение, которое, я думаю, может помочь. Вы можете использовать GoogleLocationService вместо LocationManager. Тогда вы можете использовать этот метод для получить последнее известное местоположение

mFusedLocationClient.getLastLocation()
        .addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                // Got last known location
            }
        });

Если вы используете Fused Location Provider, вы можете перестать прослушивать событие изменения местоположения после первого, например:

@Override
public void onLocationChanged(Location location) {
    Log.d("onLocationChanged", new Gson().toJson(location));
    stopLocationUpdates();
}

private void stopLocationUpdates() {
    mFusedLocationClient.removeLocationUpdates(mLocationCallback);
}

Другие вопросы по теме