Problems with getting GPS coordinates using AsyncTask
<p>I have tried to get this code sorted couple of times. Here’s the scenario I have tried so far…</p>

<p><strong>Scenario:</strong>
Once the activity is started I want to get the coordinates (long &amp; lat) based on network/gps provider. This should run in background and it should keep checking until long &amp; lat is not null or “0.0”. Thus, I have tried the following code with AsyncTask and thereby using LocationListener in doInBackground method.</p>

<p><strong>Source Code:</strong></p>

<pre><code>public class GetLocation extends AsyncTask&lt;String, String, String&gt;
{  
    private myTest test;
    boolean running =true;
    private Context cont;
    String addressString;

            public GetLocation(myTest fr, Context contxt)
            {
                test = fr;
                cont = contxt;
            }

            @Override
            protected void onPreExecute()
            {  
                super.onPreExecute();                   

            } 

            @Override 
            protected void onProgressUpdate(String... values) {
                super.onProgressUpdate(values);

             }

            @Override 
            protected void onPostExecute(String result)
            {   
                test.GetContent();
            }

            @Override
            protected String doInBackground(String... params) {
                Looper.myLooper().prepare();

                LocationManager locationManager;
                locationManager = (LocationManager) cont
                        .getSystemService(Context.LOCATION_SERVICE);

                Criteria crta = new Criteria();
                crta.setAccuracy(Criteria.ACCURACY_FINE);
                crta.setAltitudeRequired(false);
                crta.setBearingRequired(false);
                crta.setCostAllowed(true);
                crta.setPowerRequirement(Criteria.POWER_LOW);
                String provider = locationManager.getBestProvider(crta, true);

                Location location = locationManager.getLastKnownLocation(provider);
                updateWithNewLocation(location);
                LocationListener locationListener = new LocationListener() {

                    @Override
                    public void onLocationChanged(Location location) {
                        updateWithNewLocation(location);
                    }

                    @Override
                    public void onProviderDisabled(String provider) {
                        updateWithNewLocation(null);
                    }

                    @Override
                    public void onProviderEnabled(String provider) {
                    }

                    @Override
                    public void onStatusChanged(String provider, int status,
                            Bundle extras) {
                    }

                };

                locationManager.requestLocationUpdates(provider, 0, 0,
                        locationListener);
                Looper.loop();

                return addressString;
            }

            private void updateWithNewLocation(Location location) { 

                Constants.lat = Double.toString(location.getLatitude());
            Constants.long = Double.toString(location.getLongitude());        

          }
 }
</code></pre>

<p><strong>Problem:</strong>
However, I also know that Looper’s can help to keep the thread active. I want to be able to get valid coordinates and this should loop until its received. How do i call to get the locations over and over again until valid one's are received? (I could put conditions within the loops i have provided but im not aware as to how and what methods i should call to achieve this). Please provide a code snippet if possible.</p>

<p>Cheers!</p>
