如何在android中找到我的最后一个位置?

问题描述 投票:1回答:2

我想知道如何获得我最后的已知位置(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。谢谢你的帮助。

android google-maps android-studio android-maps
2个回答
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
            }
        });

0
投票

如果您使用的是Fused Location Provider,则可以在第一个之后停止侦听位置更改事件,如下所示:

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

private void stopLocationUpdates() {
    mFusedLocationClient.removeLocationUpdates(mLocationCallback);
}
© www.soinside.com 2019 - 2024. All rights reserved.