GPS não está funcionando na tarefa assíncrona
Eu implementei um programa de GPS simples que busca as coordenadas e as exibe na tela. Quando tentei melhorar esse design e implementar uma tarefa assíncrona, o GPS não parece funcionar por algum motivo ou outro. Existe algum problema com relação ao uso de tarefas assíncronas com GPS? Aqui está o meu código:
<code>private class DownloadTask extends AsyncTask<String, Void, Object> { protected Object doInBackground(String... args) { Log.i("MyApp", "Background thread starting"); LocationManager mLocationManager; Gpslistener Gpslistener; Gpslistener = new Gpslistener(); try{ mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,Gpslistener); }catch (Exception e) { test_gps = true; } return null; } protected void onPostExecute(Object result) { if(test_gps == true){ if (ParkingActivity.this.progressDialog != null) { ParkingActivity.this.progressDialog.dismiss(); } AlertMessage("GPS Error", "Unable to get location"); } public class Gpslistener implements LocationListener { @Override public void onLocationChanged(Location loc) { loc.getLatitude(); loc.getLongitude(); } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } } </code>
Cada vez que eu corro, sempre pega uma exceção. As permissões de GPS são definidas no manifesto e estou sempre usando um aplicativo diferente para garantir que uma conexão GPS esteja on-line, eliminando-as como possíveis erros. Honestamente, não consigo pensar em mais nada, sem a tarefa assíncrona que funciona perfeitamente! Qualquer ajuda é muito apreciada, obrigado!
Editado Meu logcat de exceção:
<code>05-09 22:56:20.199: E/EXCEPTION:(8874): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 05-09 22:56:20.199: E/EXCEPTION:(8874): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 05-09 22:56:20.199: E/EXCEPTION:(8874): at android.os.Handler.<init>(Handler.java:121) 05-09 22:56:20.199: E/EXCEPTION:(8874): at android.location.LocationManager$ListenerTransport$1.<init>(LocationManager.java:173) 05-09 22:56:20.199: E/EXCEPTION:(8874): at android.location.LocationManager$ListenerTransport.<init>(LocationManager.java:173) 05-09 22:56:20.199: E/EXCEPTION:(8874): at android.location.LocationManager._requestLocationUpdates(LocationManager.java:579) 05-09 22:56:20.199: E/EXCEPTION:(8874): at android.location.LocationManager.requestLocationUpdates(LocationManager.java:446) 05-09 22:56:20.199: E/EXCEPTION:(8874): at stefan.testservice.ParkingActivity$DownloadTask.doInBackground(ParkingActivity.java:163) 05-09 22:56:20.199: E/EXCEPTION:(8874): at stefan.testservice.ParkingActivity$DownloadTask.doInBackground(ParkingActivity.java:1) 05-09 22:56:20.199: E/EXCEPTION:(8874): at android.os.AsyncTask$2.call(AsyncTask.java:185) 05-09 22:56:20.199: E/EXCEPTION:(8874): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 05-09 22:56:20.199: E/EXCEPTION:(8874): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 05-09 22:56:20.199: E/EXCEPTION:(8874): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 05-09 22:56:20.199: E/EXCEPTION:(8874): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 05-09 22:56:20.199: E/EXCEPTION:(8874): at java.lang.Thread.run(Thread.java:1019) </code>