GpsStatus.Listener работает только если GPS включен

в моем приложении у меня естьGpsStatus.Listener получать события, когда пользователь включает или отключает GPS. Все работает нормально еслиGPS включен, прежде чем я запускаю приложение, В этом случае я получаюGPS_EVENT_STARTED илиGPS_EVENT_STOPPED каждый раз, когда я включаю или выключаю GPS.

Проблема в том, еслиGPS выключен во время запуска приложения, В этом случае я неЯ не получу событие, если я включу или выключу GPS.

Может кто-нибудь объяснить это мне?

Вот мой код:

public class GPSTracker implements android.location.GpsStatus.Listener {

    private final Context context;
    private final LocationListener locListener;
    private LocationManager locationManager;
    private boolean isGPSEnabled = false;

    public GPSTracker(Context context, LocationListener locListener) {
            this.context = context;
            this.locListener = locListener; 
            setupGPS();
    }

    private void setupGPS() {
            locationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);                
            locationManager.addGpsStatusListener(this);
            isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
            if(!isGPSEnabled) {
                    Toast.makeText(getContext(), "GPS disabled", Toast.LENGTH_SHORT).show();
            } else {        
                    locationManager.removeUpdates(locListener);
                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DISTANCE, locListener);
            }
    }

    @Override
    public void onGpsStatusChanged(int event) {
            Log.e("onGpsStatusChanged", event+""); 
            switch(event) {
            case GpsStatus.GPS_EVENT_STARTED:
                    Log.e("onGpsStatusChanged", "GPS_EVENT_STARTED");
                    break;
            case GpsStatus.GPS_EVENT_STOPPED:
                    Log.e("onGpsStatusChanged", "GPS_EVENT_STOPPED");
                    break;
            }
    }

Итак, мой вывод logcat (если GPS включен при запуске):

GpsStatusChanged (24638): 1 // приложение запускаетсяGpsStatusChanged (24638): GPS_EVENT_STARTEDGpsStatusChanged (24638): 4 // поиск исправленийGpsStatusChanged (24638): 4GpsStatusChanged (24638): 2 // отключить GPSGpsStatusChanged (24638): GPS_EVENT_STOPED

Выход с выключенным GPS: ничего.

Ответы на вопрос(1)

Ваш ответ на вопрос