如何获取我在Android中的最后一个位置?

时间:2018-09-19 00:05:19

标签: android google-maps android-studio android-maps

我想知道如何获取最近的已知位置(提供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 :(得分:0)

如果您使用的是LocationManager,而您只是想一次一次获得。您可以在第一个onLocationChanged之后删除喜欢的收听位置更新

@Override
public void onLocationChanged(Location location) {

   mLocationManager.removeUpdates(mListener);
}

我认为这可能会对您有所帮助。 您可以使用GoogleLocationService代替LocationManager。然后,您可以对get last known location

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

答案 1 :(得分:0)

如果您使用的是Fused Location Provider,则可以在第一个事件发生后停止监听位置更改事件:

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

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