2013-08-07 14 views
7

OK, quindi ho cercato una risposta adeguata a questo problema per un po 'di tempo. Ho un'applicazione web che utilizza navigator.geolocation.getCurrentPosition per ottenere la posizione di un utente.I dispositivi Samsung Galaxy non possono utilizzare geolocation.getCurrentPosition

Il browser nativo sui dispositivi Samsung Galaxy ha quasi sempre problemi con il codice getCurrentPosition. Ho provato tutti i tipi di variazioni di questo codice con callback e timeout, ma è sempre lo stesso problema. Un sacco di persone hanno documentato questo problema, e alcuni indicano che il riavvio del dispositivo funzionerà (a volte il riavvio funziona, ma non sempre) e un avviso che informa gli utenti di riavviare il proprio dispositivo sembra oltre ogni limite.

Qualcuno ha escogitato un modo infallibile per utilizzare getCurrentPosition per lavorare su un dispositivo Samsung Galaxy? Ecco quello che sto lavorando con ...

<script> 

$(document).ready(function(){ 

if(navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(success, fail); 
} 

else { 
    alert("Sorry, your browser does not support geolocation services."); 
} 

function success(position) { 

    window.location = "mobile_set_coordinates.php?user_lat=" + position.coords.latitude + 
    "&user_lon=" + position.coords.longitude + "&accuracy=" + position.coords.accuracy; 
} 

function fail() { 
    // Could not obtain location 
} 

}); 

</script> 

Inoltre, ecco un link a una delle discussioni in materia di emissione: https://groups.google.com/forum/#!topic/phonegap/ESrHAjFHgFU

+0

Niente di sbagliato con il tuo codice. Il problema esiste anche sulla nota della galassia e la nota 2. –

risposta

18

ho avuto esattamente lo stesso problema quando si dispone di qualche settimana fa. Ho provato a cercare circa 2 settimane su internet, esaminare tutte le soluzioni che riesco a trovare. Dopo tutto, ho scoperto che:

  1. Se Google Maps non è mai stato aperto sul telefono di destinazione, questa funzione non funziona.
  2. Ripristina lo stato GPS, quindi riavvia il telefono. Potrebbe aiutare.
  3. Se il passaggio 2 non funziona, ripristinare lo stato del GPS, attivare automaticamente Fuso orario su Impostazione ora, quindi riavviare il telefono.

Secondo le mie conoscenze, non c'è niente di sbagliato nel codice. In effetti, il mio codice è quasi uguale al tuo. Succede non solo sui dispositivi Galaxy ma anche su alcuni HTC. Ho affrontato questo problema su Galaxy S2, Galaxy Note 2, HTC Nexus One, HTC One X e HTC Incredible S. Penso che dovrebbe essere il problema tra i dispositivi Android e la concorrenza del codice in qualche modo.

Cheers,

+0

Ciao MaiLong, attualmente sto creando un'app che utilizza la geolocalizzazione. In effetti, la geolocalizzazione non può essere utilizzata se Google Maps non è aperto sul telefono. C'è un modo per rilevare se Google Maps è già stato utilizzato? Grazie. – Jeongbebs

+0

Beh, normalmente apro solo l'app Google Maps. Se è la prima volta, verrà visualizzata una schermata di benvenuto. Il mio suggerimento è di provare ad aprire Google Maps una volta dalla tua app quando l'utente la usa per la prima volta. Saluti, –

+0

apri la mappa di google funziona per me. nella mia situazione, sono in Cina, il servizio di Google è bloccato, quindi apro la VPN, quindi apro la mappa di google, quindi apro la webview che sto lavorando. Ha funzionato perfettamente. – Ninja

2

Ho avuto qualcosa di molto simile a me. Il GPS funzionerebbe bene su ogni altro dispositivo, ma si verificherebbe l'errore sui dispositivi Galaxy.

Quello che ho scoperto è che può richiedere fino a 10 secondi per ottenere una posizione GPS su questi dispositivi. Ho anche dovuto trasformare enabledHighAccuracy in falso. Ecco il mio codice.

 if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(
       function(position) { 
        // success! 
       }, 
       function() { 
        // failed to get a GPS location before timeout! 
       }, { 
        enableHighAccuracy: false, 
        timeout: 10000, 
        maximumAge: 10000 
       }); 
     } else { 
      // no support for geolocation 
     } 

Spero che questo aiuti!

1

Possiedo un Samsung Galaxy Trend Plus GT-S7580. La geolocalizzazione sul mio sito web non funzionava con questo dispositivo. In precedenza aveva funzionato con un surfpad Asus e ogni impostazione era aperta per l'accesso da e verso Internet. Non appena ho autorizzato non solo l'accesso ai dati mobili al mio posto, ma anche la rete wifi e l'accesso e raccolta di dati di Google connessi a questa impostazione, ha iniziato a funzionare. In questo caso era solo quella impostazione.

1

Ho avuto lo stesso problema sul mio tablet Galaxy GT-N8013, il getCurrentPosition non sembra funzionare su Android ma funziona su iOS. Per risolvere il problema, prima ho aumentato il timeout. In secondo luogo, apri l'app google map. Terzo, riavvia il tablet. Funziona dopo.

$cordovaGeolocation.getCurrentPosition({timeout: 30000, enableHighAccuracy: false}) 
+0

Questo ha funzionato per me. – Tiois

1

Per me, Chrome sembra essere il problema - il browser non permette origini non sicure come HTTP. Dovrebbe essere risolto trasferendo i dati su HTTPS (see Chromium). Ha funzionato sul mio Galaxy S7 Edge durante il tentativo in un browser alternativo.

Problemi correlati