Как получить один раз мое последнее местоположение в Android? - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу знать, как я могу узнать свое последнее известное местоположение (предоставляется 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 голосов
/ 19 сентября 2018

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

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

private void stopLocationUpdates() {
    mFusedLocationClient.removeLocationUpdates(mLocationCallback);
}
0 голосов
/ 19 сентября 2018

Если вы используете 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
            }
        });
...