--- android/TrainInfo/src/dk/thoerup/traininfo/LocationLookup.java 2011/05/04 09:03:08 1445 +++ android/TrainInfo/src/dk/thoerup/traininfo/LocationLookup.java 2011/05/04 20:25:15 1446 @@ -1,14 +1,15 @@ package dk.thoerup.traininfo; -import java.util.List; import android.content.Context; +import android.content.SharedPreferences; import android.location.GpsSatellite; import android.location.GpsStatus; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; +import android.preference.PreferenceManager; import android.util.Log; @@ -76,25 +77,27 @@ satCount = 0; startTime = android.os.SystemClock.elapsedRealtime(); - - List providers = locManager.getProviders(true); boolean hasProvider = false; - for(String provider : providers) { - if (provider.equals( LocationManager.PASSIVE_PROVIDER)) { - continue; - } - - Log.i("Provider", ""+provider); - hasProvider = true; - if (provider.equalsIgnoreCase("gps")) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(cntx); + String networkPref = prefs.getString("location", "GPS"); //default value is gps + + if (networkPref.equals("GPS")) { + if (locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { locManager.addGpsStatusListener(this); - hasGps = true; + locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); + + hasGps = true; + hasProvider = true; } - - locManager.requestLocationUpdates(provider, 0, 0, this); } + + if (locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { + locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); + hasProvider = true; + } + if (hasProvider == false) { // message that no suitable provider was found