Android GPS не обновляется несмотря на minTime 0 и minDistance 0 - PullRequest
0 голосов
/ 17 марта 2011

Я работал над приложением, которое отправляет пользователю по электронной почте местоположение телефона по GPS, и очень важно, чтобы телефон отправлял текущее местоположение, а не местоположение того времени.

Я попробовал пару исправлений, таких как изменение minTime и minDist, а также удаление (или не удаление) слушателя, когда закончите. Однако, это приложение должно использоваться только в определенное время, и я хочу минимального использования батареи, поэтому оставить его включенным - не лучший вариант.

Мне повезло с некоторым обновлением, если я установил minTime на небольшое количество и никогда не удалял LocationListener, в этом случае второе отправленное мной сообщение будет обновлено, но кроме этого ...

Это заставляет меня думать, что мне нужно дать ему больше времени для точного определения местоположения GPS, но как я заставлю его это сделать?

Имея это в виду, я пробовал этот фрагмент:

  LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    LocationListener locationListener = new LocationListener() {
        @Override
        public void onStatusChanged(String provider, int status,
                Bundle extras) {
            // TODO Auto-generated method stub
        }
        @Override
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub
        }
        @Override
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub
        }
        @Override
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub
        }
    };      
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, (long)(.000001), (float)(0),
            locationListener);      
    String s = "";
    SimpleDateFormat timingFormat = new SimpleDateFormat("hh:mm");
    timingFormat.format(new Date());
    s += "The current time according to the clock is: "
            + timingFormat.format(new Date()) + "\n";
    Location location = lm
            .getLastKnownLocation(LocationManager.GPS_PROVIDER);
    lm.removeUpdates(locationListener);

(возвращает строку s с добавленным адресом)

1 Ответ

0 голосов
/ 17 марта 2011

Вы должны поместить что-то в onLocationChanged, чтобы сделать что-то с приходящими обновлениями местоположения.

Обычно вы сначала получаете приблизительное приближение, и когда точность настройки GPS улучшается. Чтобы эффективно справиться с этим, попросите onLocationChanged проверить, достаточно ли точное местоположение, и позвольте ему начать все, что вы хотите с точным местоположением.

Хорошим началом было бы просто поставить

Log.v("myapp","Location changed: "+location);

in onLocationChanged(), а затем смотреть вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...