Подумайте о добавлении прослушивателя состояния 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) {
// ...
}