2010-11-12 16 views
5

Ho usato Android e l'emulatore 2.2 per un po 'ora e ho appena iniziato a scovare un problema. La mia geolocalizzazione non viene impostata nell'emulatore. All'inizio ho pensato che si trattasse di un problema con PhoneGap 0.92 ma dopo essere tornati a .91 e aver aperto un progetto precedente lo stesso vale. In DDMS le mie coordinate sono impostate e le "invio". Ho anche telnet ed emesso il comando geo fix e ottengo una risposta OK. Sembra tutto va bene, ma per qualche motivo l'emulatore non ha ancora idea.Emulatore Android che ha problemi con la geolocalizzazione

Ho trovato alcuni post precedenti: impostazione del fuso orario. L'ho fatto. Ancora senza fortuna. Uso anche il browser e vado su html5demos.com/geo per vedere se riesce a trovarmi e non lo fa.

Questo funzionava, non so cosa sia successo da allora. Ho aggiornato la mia versione di Java 1.6.0.22. Android SDK è 2.2, API 8, versione 2.

Qualsiasi consiglio o consiglio sarebbe apprezzato. Sono bloccato a questo punto.

mio PhoneGap/JS chiamata:

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); 
} 

Il 'fail' continua a succedere. Codice errore 2. L'ultimo fornitore di posizione è stato disabilitato.

--UPDATE Ancora lo stesso problema. Ho trovato un'applicazione di mappatura più vecchia che ho usato in estate, era 2.1. Così ho ricompilato e l'ho eseguito su un emulatore 2.1 e anche questo non funziona. La cosa divertente è in eclissi quando sono in DDMS e invio le coordinate a 2.1 Vedo 'una conferma che è stato inviato nell'emulatore ma con 2.2 non lo faccio.

La grande differenza è che io sono dietro un proxy ora (nuovo lavoro) dove prima non ero. Immagino di poter provare a casa ... non sono sicuro che sia importante.

+0

hai provato/sta lavorando su un telefono? – davejohnson

risposta

5

Ho avuto lo stesso problema. La soluzione è alla fine del http://docs.phonegap.com/phonegap_geolocation_geolocation.md.html#Geolocation (scorrere verso il basso):

"Android Quirks

I simulatori Android 2.x non restituire un risultato geolocalizzazione meno che l'opzione enableHighAccuracy è impostata su true

{. enableHighAccuracy: true} "

Quindi è necessario impostare enableHighAccuracy su navigator.geolocation.getCurrentPosition e sulle chiamate a navigator.geolocation.watchPosition.

+0

Grazie per il suggerimento. Ma ... non mi sembra utile :(Penso che sia un problema con l'emulatore (forse). Prima di tutto, ogni volta che accendo la tastiera ottengo la stupida tastiera giapponese per qualche motivo. Se poi vado a una app HTML5 pura che ottiene la posizione da Chrome, non funziona. Come questo-> http://html5demos.com/geo. Funziona nel mio browser ma non nel browser dell'emulatore. – jdruid

8

L'unico modo che ho trovato per fare questo lavoro è quello di telnet per l'emulatore e rilasciare un "geo fix longitudine latitudine" dopo aver attivato il codice che sto testando.Qualcosa di simile a questo emula le coordinate GPS per Trondheim, Norvegia (il porto di l'emulatore è di solito 5554, ma questo può variare con le impostazioni):

[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. 

Maggiori informazioni sulla emulazione può essere trovato here

+0

Grazie. Ho provato anche quello. Ancora nessuna fortuna. – jdruid

+0

Ho provato html5demos.com/geo, e questo non funziona neanche per me .. Ma funziona per tutti i miei siti ... – Kristian

12

È mettere in enableHighAccuracy getCurrentPosition, ad esempio:

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

Successivamente, è necessario telnet l'emulatore, e geo fissare la posizione (longitudine, latitudine) che si desidera:

[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. 

Quindi eseguire l'app PhoneGap.

+3

fantastico, che ha funzionato per me, grazie :) oh, nota anche a tutti gli altri che cercano di aver bisogno di eseguire la correzione geografica prima di ogni chiamata di getcurrentposition, dai miei esperimenti. Potrebbe essere più fastidioso non sicuro – MikeIsrael

+2

@ MikeIsrael Sarebbe molto difficile che sia più fastidioso. – mraaroncruz

+0

Funzionante molto bene! –

0

Si prega di aggiungere geolocationOptions { enableHighAccuracy: true } in navigator.geolocation.getCurrentPosition(suc,fail);

E 'il lavoro di per me.

I simulatori di Android 2.x non restituiscono un risultato di geolocalizzazione a meno che l'opzione enableHighAccuracy sia impostata su true.

In DDMS le mie coordinate devono essere impostate e le si inviano.

Problemi correlati