LocationListener timeout - PullRequest
       0

LocationListener timeout

2 голосов
/ 19 марта 2012

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

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Подумайте о добавлении прослушивателя состояния GPS в диспетчер местоположений. Слушатель состояния получает информацию о том, когда GPS запускается, останавливается, получает первое исправление или когда изменяется состояние спутника (количество видимых спутников, для исправления необходимо не менее 4).

Слушатель может выглядеть так:

class GpsStatusListener implements GpsStatus.Listener {

    @Override
    public void onGpsStatusChanged(final int event) {
        switch( event ) {
                        // ...
            break;
        case GpsStatus.GPS_EVENT_STOPPED:
                        // ...
            break;
        case GpsStatus.GPS_EVENT_FIRST_FIX:
                        // ...
            break;
        case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
                        // ...
            break;
        }
    }
}

складывается следующим образом:

lm.addGpsStatusListener(new GpsStatusListener());

Вам не нужно удалять прослушиватель местоположения при изменении статуса GPS.

Вы также можете получить дополнительную информацию от менеджера местоположений, переопределив один из следующих методов:

public void onStatusChanged(final String provider, final int status, final Bundle extras) {
    switch( status ) {
    case LocationProvider.AVAILABLE:
                // ...
        break;
    case LocationProvider.OUT_OF_SERVICE:
                // ...
        break;
    case LocationProvider.TEMPORARILY_UNAVAILABLE:
                // ...
        break;
    }
}

@Override
public void onProviderEnabled(final String provider) {
                // ...
}

@Override
public void onProviderDisabled(final String provider) {
                // ...
}
0 голосов
/ 19 марта 2012

вы должны удалить прослушиватель местоположения, когда истекло время ожидания или у вас есть текущее местоположение.

...