2010-11-12 24 views
5

He estado utilizando Android y el emulador de 2.2 por un momento ahora y acaba de empezar a tener un problema. Mi geolocalización no se establece en el emulador. Al principio pensé que era un problema con PhoneGap 0.92 pero después de volver a .91 y abrir un proyecto anterior, lo mismo es cierto. En DDMS mis coordenadas están establecidas y las 'envío'. También telnet y publico el comando geo fix y obtengo una respuesta correcta. Parece que todo está bien, pero por alguna razón el emulador todavía no tiene idea.Emulador de Android que tiene problemas con la geolocalización

Encontré algunas publicaciones más antiguas sobre cómo configurar la zona horaria. Yo lo hice. Todavía sin suerte. Incluso uso el navegador y voy a html5demos.com/geo para ver si me puede encontrar y no me aparece.

Esto solía funcionar, no estoy seguro de lo que sucedió desde entonces. Actualicé mi versión de Java 1.6.0.22. Android SDK es 2.2, API 8, revisión 2.

Cualquier consejo o trucos sería apreciado. Estoy atascado en este punto.

Mi Phonegap/JS llamada:

var getLocation = function() { 
    var suc = function(p){ 
     alert(p.coords.latitude + " " + p.coords.longitude); 
    }; 
var fail = function(error){ 
    alert('code: ' + error.code + '\n' + 
      'message: ' + error.message + '\n'); 
    }; 
    navigator.geolocation.getCurrentPosition(suc,fail); 
} 

El 'fallan' sigue ocurriendo. Código de error 2. El último proveedor de ubicación fue deshabilitado.

--UPDATE Todavía tiene el mismo problema. Encontré una aplicación de mapeo más antigua que utilicé en el verano, era 2.1. Así que volví a compilarlo y lo ejecuté en un emulador 2.1 y eso tampoco funciona. Lo gracioso está en eclipse cuando estoy en DDMS y envío coordenadas a 2.1. 'Veo' una confirmación de que ha sido enviado en el emulador pero con 2.2 no lo hago.

La gran diferencia es que ahora estoy detrás de un proxy (nuevo trabajo) donde antes no estaba. Creo que podría intentarlo en casa ... no estoy seguro si eso importa.

+0

has probado/¿está trabajando en un teléfono? – davejohnson

Respuesta

5

Tuve el mismo problema. La solución está en el extremo de http://docs.phonegap.com/phonegap_geolocation_geolocation.md.html#Geolocation (desplácese hacia abajo):

"Peculiaridades Android

Los simuladores Android 2.x no volverán a consecuencia de geolocalización menos que la opción enableHighAccuracy se establece en true

{. enableHighAccuracy: true} "

Así que debe establecer enableHighAccuracy en su navigator.geolocation.getCurrentPosition y su navigator.geolocation.watchPosition calls.

+0

Gracias por la sugerencia. Pero ... todavía no funciona :(Creo que es un problema con el emulador (tal vez). En primer lugar, cada vez que lo enciendo obtengo el estúpido teclado japonés por alguna razón. Si luego voy a una aplicación pura HTML5 que obtiene ubicación de Chrome, no funciona. Me gusta esto-> http://html5demos.com/geo. Eso funciona en mi navegador pero no en el navegador del emulador. – jdruid

8

La única forma que he encontrado para hacer esto funciona es hacer una telnet al emulador y emitir una "latitud geográfica de longitud de posición" después de haber activado el código que estoy probando.Algo como esto emula las coordenadas GPS para Trondheim, Noruega (el puerto del emulador suele ser 5554, pero esto puede variar según la configuración):

[email protected]:~$ telnet localhost 5554 
Trying 127.0.0.1... 
Connected to localhost.localdomain. 
Escape character is '^]'. 
Android Console: type 'help' for a list of commands 
OK 
geo fix 10.40 63.40 
OK 
quit 
Connection closed by foreign host. 

Más información sobre la emulación se puede encontrar here

+0

Gracias. Lo intenté también. Todavía no tuve suerte. – jdruid

+0

Probé html5demos.com/geo, y eso tampoco funciona para mí ... Pero funciona para todos mis sitios ... – Kristian

12

Usted tiene que poner en enableHighAccuracy getCurrentPosition, por ejemplo:

navigator.geolocation.getCurrentPosition(onSuccess, onError, { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }); 

a continuación, usted tiene que telnet en el emulador, y geo fijar la posición (longitud, latitud) que desea:

[email protected]:~$ telnet localhost 5554 
Trying 127.0.0.1... 
Connected to localhost.localdomain. 
Escape character is '^]'. 
Android Console: type 'help' for a list of commands 
OK 
geo fix 101.689453 3.074695 
OK 
quit 
Connection closed by foreign host. 

Luego ejecute su aplicación PhoneGap.

+3

increíble, eso funcionó para mí, gracias :) oh, también tenga en cuenta que cualquier otra persona que lo intente necesita ejecute la corrección geográfica antes de cada llamada a getcurrentposition, de mis experimentos. Podría ser más molesto no estoy seguro – MikeIsrael

+2

@MikeIsrael Sería muy difícil que sea más molesto. – mraaroncruz

+0

¡Trabajando muy bien! –

0

Por favor, añadir geolocationOptions { enableHighAccuracy: true } en la obra de navigator.geolocation.getCurrentPosition(suc,fail);

Es para mí.

Los simuladores de Android 2.x no devolverán un resultado de geolocalización a menos que la opción enableHighAccuracy esté establecida en verdadero.

En DDMS, mis coordenadas deben configurarse y 'enviarlas'.

Cuestiones relacionadas