Bitácora de Javier Cancela

Errores emulando el GPS en Android

Existen dos formas de enviar datos al GPS del emulador de Android: con el DDMS (Dalvik Debug Monitor Service) y con la instrucción ‘geo’ de la consola del emulador (como se explica en la documentación [http://developer.android.com/guide/topics/location/index.html#location]). El DDMS es especialmente útil, ya que permite cargar archivos kml o gpx a partir de los cuales enviar actualizaciones periódicas al emulador. Sin embargo, en la versión 1.5 r2 de la SDK de Android hay dos bugs que resultan bastante molestos para desarrollar aplicaciones que usan el GPS.
El primero de ellos está relacionado con el formato de las coordenadas enviadas al emulador. Por algún motivo (probablemente relacionado con el caracter usado para separa los decimales, ‘,’ en español y ‘.’ en inglés) el emulador sólo recibe correctamente las actualizaciones si la configuración regional está establecida a idioma inglés. En realidad no es necesario cambiar la configuración local de todo el sistema. Usando DDMS, basta con establecer la siguiente variable de entorno: ‘java_debug=-Duser.language=en’, o, si usamos el plugin para Eclipse, añadir ‘-Duser.language=en’ al eclipse.ini. Más información en la incidencia abierta en Google Code [http://code.google.com/p/android/issues/detail?id=915].
El segundo error se produce cuando intentamos enviar varias actualizaciones al GPS del emulador. Por algún motivo las localizaciones enviadas después de la primera no llegan al emulador. Esto significa que el método onLocationChanged sólo será invocado una vez. En la discusión sobre la incidencia abierta [http://code.google.com/p/android/issues/detail?id=2545] se indica una solución provisional: cancelar la subscripción al LocationListener y volverla a subscribir:
public void onLocationChanged(Location location) {
mLocationManager.removeUpdates(locationListener);
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
3000,
1,
locationListener);

Existen dos formas de enviar datos al GPS del emulador de Android: con el DDMS (Dalvik Debug Monitor Service) y con la instrucción ‘geo’ de la consola del emulador (como se explica en la documentación). El DDMS es especialmente útil, ya que permite cargar archivos kml o gpx a partir de los cuales enviar actualizaciones periódicas al emulador. Sin embargo, en la versión 1.5 r2 de la SDK de Android hay dos bugs que resultan bastante incómodos.

El GPS no recibe ninguna señal

El primero de ellos está relacionado con el formato de las coordenadas enviadas al emulador. Por algún motivo (probablemente relacionado con el carácter usado para separa los decimales, la coma en español y punto en inglés) el emulador sólo recibe correctamente las actualizaciones si la configuración regional está establecida a idioma inglés.

Para solucionar este problema basta cambiar el locale del runtime de java. Usando DDMS, se establece la siguiente variable de entorno: ‘java_debug=-Duser.language=en’, o, si usamos el plugin para Eclipse, se añade ‘-Duser.language=en’ al archivo eclipse.ini. Más información en la incidencia abierta en Google Code.

El GPS sólo recibe la primera localización

Actualización: La versión 1.5 release 3 de la SDK ya corrige este error

El segundo error se produce cuando intentamos enviar varias actualizaciones al GPS del emulador. Por algún motivo las localizaciones enviadas después de la primera no llegan al emulador. Esto significa que el método onLocationChanged sólo será invocado una vez. En la discusión sobre la incidencia abierta se indica una solución provisional: cancelar la subscripción al LocationListener y volverla a subscribir:

public void onLocationChanged(Location location) {
 mLocationManager.removeUpdates(locationListener);
 mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
3000,
1,
locationListener);
...
}

No he podido confirmar que este error afecte a todo el mundo que usa la SDK 1.5 r2, aunque sí está bastante extendido. Es de suponer que Google lo corregirá en la próxima revisión de la SDK.

Advertisement

Escrito por Javier Cancela

15 de julio de 2009 a 7:00

Escrito en Android

Etiquetado con , , ,

3 comentarios

Suscríbete a los comentarios mediante RSS.

  1. Buenas,

    Yo tengo instalada la 1.5.r3 y solo recibo la primera de Localización de los datos que envío con el DDMS.

    Saludos.

    Alexillo

    8 de agosto de 2009 a 21:54

  2. A mí se me arregló con el cambio de la r2 a la r3. No sé qué otros factores pueden influir en este error.

    Javier Cancela

    11 de agosto de 2009 a 11:19

  3. Cuando quiero representar buques y alguno de ellos tienen caracetres como el & se produce un error en el archivo kml y se borran todos los buques.
    Diganme por favor como soluciono esto.

    Muchas gracias

    Se cuelga el google earth

    12 de junio de 2010 a 3:51


Los comentarios están cerrados.

Seguir

Get every new post delivered to your Inbox.