title: How to get different latitude and longitude while moving for every 1 minute in android?
body: <p>now i am working with GPS for getting different latitude and longitude for every 1 minute while moving and that has to be stored into array list. I am using thread for this. I followed this link. <a href="http://www.androidhive.info/2012/08/android-working-with-google-places-and-maps-tutorial/" rel="nofollow">http://www.androidhive.info/2012/08/android-working-with-google-places-and-maps-tutorial/</a> </p>
  
  <p>And my code is</p>
  
  <p>Tracking.java</p>
  
  <pre><code>package com.example.getlatlang;
  
  import java.util.ArrayList;
  import android.app.Activity;
  import android.os.Bundle;
  import android.view.View;
  import android.widget.Button;
  import android.widget.Toast;
  
  
  public class Tracking extends Activity 
  {
  
  Button btnShowLocation;
  boolean isRepeat = true;
   protected int splashTime = 1000;
  
   int timer =0;
  Thread th;
  ArrayList&lt;Double&gt; lat_array = new ArrayList&lt;Double&gt;();
  ArrayList&lt;Double&gt; lon_array = new ArrayList&lt;Double&gt;();
  // GPSTracker class
  GPSTracker gps;
  
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.currentlocation);
  
      btnShowLocation = (Button) findViewById(R.id.start_bt);
  
      // show location button click event
      btnShowLocation.setOnClickListener(new View.OnClickListener()
      {
  
          @Override
          public void onClick(View arg0)
          {       
              // create class object
  
              if(isRepeat)
              {
                  isRepeat = false;
                  btnShowLocation.setBackgroundResource(R.drawable.stop);
                  if(lat_array.size()&gt;0 &amp;&amp; lon_array.size()&gt;0)
                  {
                      lat_array.clear();
                      lon_array.clear();
                      System.out.println("Array cleared...");
                  }
              // check if GPS enabled th=new Thread()
                  th=new Thread()
                   {
                       @Override
                          public void run(){
                              try
                              {
                                 for (timer = 0; timer &lt; 20; timer++)
                                 {
                                     // int waited = 0;
                                    //  while(waited &lt; splashTime)
                                    //  {
                                          Thread.sleep(100);
                                          runOnUiThread(new Runnable()
                                          {
                                              @Override
                                              public void run()
                                              {
                                                  try
                                                  {    gps = new GPSTracker(Tracking.this);
                                                      if(gps.canGetLocation())
                                                      {
  
                                                          double latitude = gps.getLatitude();
                                                          double longitude = gps.getLongitude();
  
                                                          lat_array.add(latitude);
  
                                                          lon_array.add(longitude);
                                                          // \n is for new line
                                                          System.out.println("lat_array"+lat_array+"lon_array"+lon_array);
                                                          Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + lat_array + "\nLong: " + lon_array, Toast.LENGTH_LONG).show();   
                                                      }
                                                      else
                                                      {
                                                          // can't get location
                                                          // GPS or Network is not enabled
                                                          // Ask user to enable GPS/network in settings
                                                          gps.showSettingsAlert();
                                                      }
                                                  }
                                                  catch(Exception e)
                                                  {
                                                      e.printStackTrace();
                                                  }
                                              }
                                          });
                                      //  waited += 100;
                                      //}
                                 }}
                             catch (InterruptedException e)
                             {
                              }
  
                          }
                      };
                      th.start();
  
                  }
  
  
              else
              {
  
                  isRepeat = true;                      
                  th.interrupt();
                  btnShowLocation.setBackgroundResource(R.drawable.start);
  
              }
          }
      });
  }
  public void ohDestroy()
  {
       th.stop();
  }
  }
  </code></pre>
  
  <p>GPSTracker.java</p>
  
  <pre><code>package com.example.getlatlang;
  
  import android.app.AlertDialog;
  import android.app.Service;
  import android.content.Context;
  import android.content.DialogInterface;
  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.provider.Settings;
  import android.util.Log;
  
   public class GPSTracker extends Service implements LocationListener
   {
  
  private final Context mContext;
  
  // flag for GPS status
  boolean isGPSEnabled = false;
  
  // flag for network status
  boolean isNetworkEnabled = false;
  
  // flag for GPS status
  boolean canGetLocation = false;
  
  Location location; // location
  double latitude; // latitude
  double longitude; // longitude
  
  // The minimum distance to change Updates in meters
  private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
  
  // The minimum time between updates in milliseconds
  private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
  
  // Declaring a Location Manager
  protected LocationManager locationManager;
  
  public GPSTracker(Context context) {
      this.mContext = context;
      getLocation();
  }
  
  public Location getLocation() {
      try {
          locationManager = (LocationManager) mContext
                  .getSystemService(LOCATION_SERVICE);
  
          // getting GPS status
          isGPSEnabled = locationManager
                  .isProviderEnabled(LocationManager.GPS_PROVIDER);
  
          // getting network status
          isNetworkEnabled = locationManager
                  .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
  
          if (!isGPSEnabled &amp;&amp; !isNetworkEnabled) {
              // no network provider is enabled
          } else {
              this.canGetLocation = true;
              if (isNetworkEnabled) {
                  locationManager.requestLocationUpdates(
                          LocationManager.NETWORK_PROVIDER,
                          MIN_TIME_BW_UPDATES,
                          MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                  Log.d("Network", "Network");
                  if (locationManager != null) {
                      location = locationManager
                              .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                      if (location != null) {
                          latitude = location.getLatitude();
                          longitude = location.getLongitude();
                      }
                  }
              }
              // if GPS Enabled get lat/long using GPS Services
              if (isGPSEnabled) {
                  if (location == null) {
                      locationManager.requestLocationUpdates(
                              LocationManager.GPS_PROVIDER,
                              MIN_TIME_BW_UPDATES,
                              MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                      Log.d("GPS Enabled", "GPS Enabled");
                      if (locationManager != null) {
                          location = locationManager
                                  .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                          if (location != null) {
                              latitude = location.getLatitude();
                              longitude = location.getLongitude();
                          }
                      }
                  }
              }
          }
  
      } catch (Exception e) {
          e.printStackTrace();
      }
  
      return location;
  }
  
  /**
   * Stop using GPS listener
   * Calling this function will stop using GPS in your app
   * */
  public void stopUsingGPS(){
      if(locationManager != null){
          locationManager.removeUpdates(GPSTracker.this);
      }       
  }
  
  /**
   * Function to get latitude
   * */
  public double getLatitude(){
      if(location != null){
          latitude = location.getLatitude();
      }
  
      // return latitude
      return latitude;
  }
  
  /**
   * Function to get longitude
   * */
  public double getLongitude(){
      if(location != null){
          longitude = location.getLongitude();
      }
  
      // return longitude
      return longitude;
  }
  
  /**
   * Function to check GPS/wifi enabled
   * @return boolean
   * */
  public boolean canGetLocation() {
      return this.canGetLocation;
  }
  
  /**
   * Function to show settings alert dialog
   * On pressing Settings button will lauch Settings Options
   * */
  public void showSettingsAlert(){
      AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
  
      // Setting Dialog Title
      alertDialog.setTitle("GPS is settings");
  
      // Setting Dialog Message
      alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");
  
      // On pressing Settings button
      alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog,int which) {
              Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
              mContext.startActivity(intent);
          }
      });
  
      // on pressing cancel button
      alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int which) {
          dialog.cancel();
          }
      });
  
      // Showing Alert Message
      alertDialog.show();
  }
  
  @Override
  public void onLocationChanged(Location location) {
  }
  
  @Override
  public void onProviderDisabled(String provider) {
  }
  
  @Override
  public void onProviderEnabled(String provider) {
  }
  
  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) {
  }
  
  @Override
  public IBinder onBind(Intent arg0) {
      return null;
  }
  
   }
  </code></pre>
  
  <p>Now my issue is can't able to get different latitude and longitude points while moving. The first value only stored into an array for 20 times. Because i am setting the Tread must be run 20 times like that. But i want to get different points and stored into an array list. I don't know where i did the mistake. Can any body help me to resolve this problem? Thanks in advance.</p>