Obtención de las coordenadas GPS con un IntentService

218 views
Skip to first unread message

Carlos Contreras

unread,
Feb 27, 2015, 1:43:06 AM2/27/15
to desarrollad...@googlegroups.com


Hola, he estado buscando y no he encontrado ningún tema donde poner esto.
Estoy intentando lanzar un servicio en un hilo secundario que obtenga latitud y longitud cada 30 segundos mediante el GPS y mande un mensaje que es recibido por el BroadcastReceiver cada vez que la latitud y longitud ha cambiado (30 segundos).
El problema es que no se porque no entra al onLocationChanged. La aplicación no da error solo que cada 30 segundos en vez de entrar al onLocationChanged, da un mensaje de warning en amarillo en el Logcat. ¿Alguien sabe que hago mal? o ¿Como hacerlo?
Adjunto el workspace de la aplicación.
El logcat es el siguiente:

02-25 20:29:17.427: W/MessageQueue(29239): Handler (android.location.LocationManager$ListenerTransport$1) {42c71300} sending message to a Handler on a dead thread
02-25 20:29:17.427: W/MessageQueue(29239): java.lang.RuntimeException: Handler (android.location.LocationManager$ListenerTransport$1) {42c71300} sending message to a Handler on a dead thread
02-25 20:29:17.427: W/MessageQueue(29239): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:320)
02-25 20:29:17.427: W/MessageQueue(29239): at android.os.Handler.enqueueMessage(Handler.java:626)
02-25 20:29:17.427: W/MessageQueue(29239): at android.os.Handler.sendMessageAtTime(Handler.java:595)
02-25 20:29:17.427: W/MessageQueue(29239): at android.os.Handler.sendMessageDelayed(Handler.java:566)
02-25 20:29:17.427: W/MessageQueue(29239): at android.os.Handler.sendMessage(Handler.java:503)
02-25 20:29:17.427: W/MessageQueue(29239): at android.location.LocationManager$ListenerTransport.onLocationChanged(LocationManager.java:242)
02-25 20:29:17.427:: W/MessageQueue(30008): at android.location.ILocationListener$Stub.onTransact(ILocationListener.java:75)
02-25 20:29:17.427:: W/MessageQueue(30008): at android.os.Binder.execTransact(Binder.java:404)
02-25 20:29:17.427:: W/MessageQueue(30008): at dalvik.system.NativeStart.run(Native Method)

Eso lo repite cada 30 segundos que es cuando debe entrar al onLocationChanged.

Mi servicio es el siguiente:

package com.example.coordenadas;

import android.app.IntentService;
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.util.Log;

public class ServicioGps extends IntentService{
private LocationManager manejador;
private LocationListener locListener;
public ServicioGps() {
super("ServicioGps");
}

@Override
protected void onHandleIntent(Intent intent) {
//Inicio Gps
manejador= (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//proveedor = manejador.GPS_PROVIDER;
locListener = new LocationListener(){

@Override
public void onLocationChanged(Location location) {
//Mando un mensaje cada vez que la posicion cambie con latitud y longitud.
if(location!=null)
{
Double lat = location.getLatitude();
Double lon= location.getLongitude();
Log.d("latitud y longitud: ", Double.toString(lat)+Double.toString(lon));
Intent e = new Intent();
e.setAction(MainActivity.ReceptorOperacion.ACTION_RESP);
e.addCategory(Intent.CATEGORY_DEFAULT);
e.putExtra("latitud", lat);
e.putExtra("longitud", lon);
sendBroadcast(e);
}
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
};
Log.d("tag", "Voy a lanzar el requestlocationupdate");
                
manejador.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000, 0, locListener);
}
}
ServicioCoordenadas.rar
Reply all
Reply to author
Forward
0 new messages