Получение местоположения android?

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

     public void registerListener() {

            if (ActivityCompat.checkSelfPermission(c, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(c, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            } else {
                lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10, locationListener);
            }
        }
        private final LocationListener locationListener = new LocationListener() {
            public void onLocationChanged(Location location) {

                 longitude = location.getLongitude();
                 latitude = location.getLatitude();

                Log.v(TAG, ""+longitude + "                       " +latitude);

            }
@Override
        public void onStatusChanged(String provider, int status, Bundle extras) {} 
        @Override
        public void onProviderEnabled(String provider) {} 
        @Override
        public void onProviderDisabled(String provider) {}
    };

Я вызываю registerListener() из другого места. Проблема в том, что мое обновление местоположения вызывается только один раз, и я получаю этот журнал только один раз. Кроме того, журнал появляется примерно через 5-10 секунд после, вызывающего registerListener.

В чем причина медленности и почему обновление не обновляется?

Спасибо,

Ruchir

Ответ 1

Вы запрашиваете местоположение GPS. Для получения спутникового замка в первый раз потребуется несколько секунд. Это может никогда не произойти, если вы не можете получить блокировку сигнала (в помещении в некоторых зданиях, слишком далеко под землей, физический ущерб телефону, как свободная антенна (распространенная в ранних поколениях Samsung)).

Что касается того, что вы не получили его снова, вы не получите его снова, если не будете двигаться не менее 10 метров. Измените это на 0 и посмотрите, как это происходит каждую секунду.