title: Gps service - couldn't retrieve a location
body: <p>I am newbie. I wrote a class, that implements service and uses gps, but location allways null. All needed permissions are wrote and service is normally starting, i could bind to it, but retrieved location is allways null and it never goes in <em>onLocationChanged(Location location)</em>. Can anybody help, please?</p>
  
  <pre><code>public class GPSService extends Service {
  
  
      private static final String TAG = "GPS_SERVICE";
      private LocationManager mLocationManager = null;
      private static final int LOCATION_INTERVAL = 1000;
      private static final float LOCATION_DISTANCE = 10f;
      Location currentLocation;
  
      private class LocationListener implements android.location.LocationListener{
  
          Location mLastLocation;
  
          public LocationListener(String provider)
          {
              Log.e(TAG, "LocationListener " + provider);
              mLastLocation = new Location(provider);
          }
  
          public void onLocationChanged(Location location)
          {
              Log.e(TAG, "onLocationChanged: " + location);
              if (location != null){
                  mLastLocation.set(location);
                  currentLocation = mLastLocation;                
              }
  
          }
  
          public void onProviderDisabled(String provider)
          {
              Log.e(TAG, "onProviderDisabled: " + provider);            
          }
  
          public void onProviderEnabled(String provider)
          {
              Log.e(TAG, "onProviderEnabled: " + provider);
          }
  
          public void onStatusChanged(String provider, int status, Bundle extras)
          {
              Log.e(TAG, "onStatusChanged: " + provider);
          }
  
      } 
  
  
      LocationListener[] mLocationListeners = new LocationListener[] {
              new LocationListener(LocationManager.GPS_PROVIDER),
              new LocationListener(LocationManager.NETWORK_PROVIDER)
      };
  
  
      private IBinder mBinder = new GPSServiceBinder();
  
      public class GPSServiceBinder extends Binder {
          public GPSService getServerInstance() {
              return GPSService.this;
          }
      }
  
      public int onStartCommand(Intent intent, int flags, int startId)
      {
          Log.e(TAG, "onStartCommand");
          super.onStartCommand(intent, flags, startId);       
          return START_STICKY;
      }
  
      public IBinder onBind(Intent intent) {
          return mBinder;
      }
  
      int minTime = 6000;
      float minDistance = 15;
  
      public void onCreate()
      {
          Log.e(TAG, "onCreate");
          initializeLocationManager();
  
          try {
              mLocationManager.requestLocationUpdates(
                      LocationManager.NETWORK_PROVIDER, LOCATION_INTERVAL, LOCATION_DISTANCE,
                      mLocationListeners[1]);
          } catch (java.lang.SecurityException ex) {
              Log.i(TAG, "fail to request location update, ignore", ex);
          } catch (IllegalArgumentException ex) {
              Log.d(TAG, "network provider does not exist, " + ex.getMessage());
          }
          try {
              mLocationManager.requestLocationUpdates(
                      LocationManager.GPS_PROVIDER, LOCATION_INTERVAL, LOCATION_DISTANCE,
                      mLocationListeners[0]);
          } catch (java.lang.SecurityException ex) {
              Log.i(TAG, "fail to request location update, ignore", ex);
          } catch (IllegalArgumentException ex) {
              Log.d(TAG, "gps provider does not exist " + ex.getMessage());
          }
      }
  
  
      public Location getLocation()
      {   
          return currentLocation;
      }
  
  
      public void onDestroy()
      {
          Log.e(TAG, "onDestroy");
          super.onDestroy();
          if (mLocationManager != null) {
              for (int i = 0; i &lt; mLocationListeners.length; i++) {
                  try {
                      mLocationManager.removeUpdates(mLocationListeners[i]);
                  } catch (Exception ex) {
                      Log.i(TAG, "fail to remove location listners, ignore", ex);
                  }
              }
          }
      } 
  
  
      private void initializeLocationManager() {
          Log.e(TAG, "initializeLocationManager");
          if (mLocationManager == null) {
              mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
          }
      }
  }
  </code></pre>