title: Android service locationlistener not activated
body: <p>I've implemented an android service that start on boot :
  <code>MyService.java</code></p>
  
  <pre><code>package com.example.testservicelogging;
  
  import com.example.testservicelogging.MyBroadcastReceiver;
  
  import android.app.PendingIntent;
  import android.app.Service;
  import android.content.Context;
  import android.content.Intent;
  import android.location.Location;
  import android.location.LocationListener;
  import android.location.LocationManager;
  import android.os.Bundle;
  import android.os.IBinder;
  import android.widget.Toast;
  
  
  public class MyService extends Service implements LocationListener {
  
      LocationManager lm;
      PendingIntent pendingIntent;
      LocationListener locationListener;
  
      public MyService() {
      }
  
      @Override
      public IBinder onBind(Intent arg0) {
          // TODO Auto-generated method stub
          return null;
      }
  
      @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
          //TODO do something useful
          //Toast.makeText(getBaseContext(), "Got in!!!", Toast.LENGTH_SHORT).show();
          System.out.println("Got in");
  
           Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();        
  
              //---use the LocationManager class to obtain locations data---
              lm = (LocationManager)
                      getSystemService(Context.LOCATION_SERVICE);
  
  
              Intent i = new Intent(this, MyBroadcastReceiver.class);
              pendingIntent = PendingIntent.getBroadcast(
                      this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
  
            //---request for location updates using GPS---
              lm.requestLocationUpdates(
                      LocationManager.GPS_PROVIDER,
                      6000,
                      5,
                      pendingIntent);     
  
          return START_STICKY;
        }
  
  
      @Override
      public void onDestroy() {
          //---remove the pending intent---
          lm.removeUpdates(pendingIntent);
  
          super.onDestroy();
          Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();        
      }
  
      @Override
      public void onLocationChanged(Location arg0) {
          // TODO Auto-generated method stub
          Toast.makeText(this, "onLocationChanged", Toast.LENGTH_LONG).show();   
  
      }
  
      @Override
      public void onProviderDisabled(String arg0) {
          // TODO Auto-generated method stub
          Toast.makeText(this, "onProviderDisabled", Toast.LENGTH_LONG).show();   
  
      }
  
      @Override
      public void onProviderEnabled(String arg0) {
          // TODO Auto-generated method stub
          Toast.makeText(this, "onProviderEnabled", Toast.LENGTH_LONG).show();   
  
      }
  
      @Override
      public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
          // TODO Auto-generated method stub
          Toast.makeText(this, "onStatusChanged", Toast.LENGTH_LONG).show();   
  
      }
  
  
  }
  </code></pre>
  
  <p>also a <code>BroadcastReceiver</code> class :</p>
  
  <pre><code>package com.example.testservicelogging;
  
  import java.io.IOException;
  
  import org.apache.http.HttpResponse;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.methods.HttpGet;
  import org.apache.http.impl.client.DefaultHttpClient;
  
  import android.content.BroadcastReceiver;
  import android.content.Context;
  import android.content.Intent;
  import android.location.Location;
  import android.location.LocationManager;
  import android.util.Log;
  import android.widget.Toast;
  
  
  public class MyBroadcastReceiver extends BroadcastReceiver {
  
      @Override
      public void onReceive(Context context, Intent intent) {
  
  
          Intent t=new Intent(context, MyService.class);
          t.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startService(t);
  
          String locationKey = LocationManager.KEY_LOCATION_CHANGED;
          String providerEnabledKey = LocationManager.KEY_PROVIDER_ENABLED;
  
          //Toast.makeText(context, "INSIDE!!!", Toast.LENGTH_SHORT).show(); 
          System.out.println("INSIDE");
  
          if (intent.hasExtra(providerEnabledKey)) {
              if (!intent.getBooleanExtra(providerEnabledKey, true)) {
                  Toast.makeText(context,
                          "Provider disabled",
                          Toast.LENGTH_SHORT).show();              
              } else {
                  Toast.makeText(context,
                          "Provider enabled",
                          Toast.LENGTH_SHORT).show();
              }
          }
  
          if (intent.hasExtra(locationKey)) {
              Location loc = (Location)intent.getExtras().get(locationKey);
              Toast.makeText(context,
                      "Location changed : Lat: " + loc.getLatitude() +
                      " Lng: " + loc.getLongitude(),
                      Toast.LENGTH_SHORT).show();
  
  
  
              //do something with the coordinates returned
  
  
          }
  
      }
  
  
  }
  </code></pre>
  
  <p>I'm facing some problems :</p>
  
  <ol>
  <li>(and most important) : service loads on boot, but even if I see the GPS icon flashing, it never return coordinates !!! What I am doing wrong ??</li>
  <li>I want to get coordinates in predefined time intervals (e.g. every 15 minutes from 08:00 to 18:00 every day). How can I implement that ??</li>
  <li>Even if I raise up to 100000 milliseconds and 500 the distance to activate requestLocationUpdates, it sometimes run every 2-5 seconds even if I am staying still !!! How can I overcome that ??</li>
  </ol>
  
  <p>Thank you very much for the help !!!</p>