onLocationChanged вызывается только один раз, без обновления

По какой-то причине я сделал небольшое приложение GPS, onLocationChanged не обновляется, оно запускается только один раз при запуске приложения.

Вот мой код:

public BackgroundLocationService() {
        super("myintentservice");

        locManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

        Criteria crt = new Criteria();
        crt.setAccuracy(Criteria.ACCURACY_FINE);
        String bestProvider = locManager.getBestProvider(crt, true);

        boolean gps_enabled;
        boolean network_enabled;
        boolean best_enabled;

        gps_enabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        network_enabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
        best_enabled = locManager.isProviderEnabled(bestProvider);


        if (best_enabled) {
            locManager.requestLocationUpdates(bestProvider, 15000, 20, locListener);
            Log.i(TAG, "Best enabled: " + bestProvider);
        } else {
            Log.i("Location Provider: ", "best not enabled: " + bestProvider);
            if (gps_enabled) {
                locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
                Log.i(TAG, "gps enabled!");
            }
            if (network_enabled) {
                locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener);
                Log.i(TAG, "network enabled!");
            }
        }

    }



    class MyLocationListener implements LocationListener {
        public void onLocationChanged(Location location) {

            if (location != null) {

                //locManager.removeUpdates(locListener);
                longitude = Double.toString(location.getLongitude());
                latitude = Double.toString(location.getLatitude());

                Log.i(TAG,"Location has CHANGED!");
            }
        }
        public void onProviderDisabled(String arg) {}
        public void onProviderEnabled(String arg) {}
        public void onStatusChanged(String provider, int status, Bundle extras) {}
    }

«Местоположение ИЗМЕНИЛОСЬ!» сообщение отображается только один раз при каждом запуске приложения. Я в офисе, но могу отойти на 5-10 метров от своего места, и ВСЕ провайдеры включены, так что все должно быть в порядке, не так ли?

Любые идеи ?


person Adam Varhegyi    schedule 24.01.2013    source источник
comment
Я думаю, что вы должны указать меньше метров: locManager.requestLocationUpdates(bestProvider, 15000, 5, locListener); (Например)   -  person SolArabehety    schedule 24.01.2013


Ответы (2)


Когда вы регистрируете прослушиватель местоположения, вы запрашиваете обновления с минимальным временем 15 секунд и минимальным расстоянием 20 метров. Поскольку вы находитесь в офисе, маловероятно, что вы сможете получить достаточно точное определение GPS, чтобы фактически обнаружить движение на 5-10 метров. Вы пробовали отладку снаружи? Точно так же, если вы включили фиктивные местоположения, отправьте фиктивные координаты в эмулятор, чтобы убедиться, что ваше приложение работает так, как вы ожидаете, при обновлении местоположений.

person Chris    schedule 24.01.2013

попробуй с-

    locManager.requestLocationUpdates(bestProvider, 0, 0, locListener);
person Jambaaz    schedule 24.01.2013