2013-08-07 9 views
7

OK, więc od dłuższego czasu poszukuję odpowiedniej odpowiedzi na ten problem. Mam aplikację internetową, która używa navigator.geolocation.getCurrentPosition, aby uzyskać pozycję użytkownika.Urządzenia Samsung Galaxy nie mogą używać funkcji geolocation.getCurrentPosition

Natywna przeglądarka na urządzeniach Samsung Galaxy prawie zawsze ma problemy z kodem getCurrentPosition. Próbowałem różnych odmian tego kodu z wywołania zwrotnego i limitów czasu, ale zawsze jest to ten sam problem. Wiele osób udokumentowało ten problem, a niektóre wskazują, że ponowne uruchomienie urządzenia będzie działało (czasami ponowne uruchomienie działa, ale nie zawsze - a alarm informujący użytkowników o ponownym uruchomieniu urządzenia wydaje się być nieskuteczny).

Czy ktoś wymyślił sposób pewnie używać getCurrentPosition do pracy na urządzeniu Samsung Galaxy? Oto, co pracuję z ...

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

Również tutaj link do jednej z dyskusji dotyczących kwestii: https://groups.google.com/forum/#!topic/phonegap/ESrHAjFHgFU

+0

Nic złego w kodzie. Problem występuje również w notatce o galaktyce i notatce 2. –

Odpowiedz

18

Mam dokładnie ten sam problem jak masz kilka tygodni temu. Próbowałem zbadać około 2 tygodnie w Internecie, przyjrzeć się wszystkim rozwiązaniom, które mogę znaleźć. W końcu dowiedziałem się, że:

  1. Jeśli Google Maps nigdy nie był otwarty na Twoim telefonie docelowym, ta funkcja nie działa.
  2. Zresetuj stan GPS, a następnie uruchom ponownie telefon. To może pomóc.
  3. Jeśli krok 2 nie działa, zresetuj stan GPS, włącz opcję Strefa czasowa automatycznie w ustawieniu Data, a następnie uruchom ponownie telefon.

Zgodnie z moją wiedzą, kod nie zawiera żadnych błędów. W rzeczywistości mój kod jest prawie taki sam jak twój. Zdarza się to nie tylko w urządzeniach Galaxy, ale także w niektórych HTC. Miałem do czynienia z tym problemem na Galaxy S2, Galaxy Note 2, HTC Nexus One, HTC One X i HTC Incredible S. Myślę, że powinien to być problem między urządzeniami z Androidem i konkurencją kodu w jakiś sposób.

Pozdrowienia,

+0

Witaj, jestem w trakcie tworzenia aplikacji korzystającej z geolokalizacji. W rzeczywistości geolokalizacja nie może być wykorzystana, jeśli Mapy Google nie są otwarte przez telefon. Czy istnieje sposób na wykrycie, czy Mapy Google zostały już wykorzystane? Dzięki. – Jeongbebs

+0

Otóż zwykle otwieram aplikację Mapy Google. Jeśli jest po raz pierwszy, wyświetli się ekran powitalny. Proponuję, aby spróbować otworzyć Mapy Google raz z poziomu aplikacji, gdy użytkownik użyje jej po raz pierwszy. Pozdrawiam, –

+0

otwarta mapa google działa dla mnie. w mojej sytuacji jestem w Chinach, usługa Google jest zablokowana, więc otwieram VPN, następnie otwieram mapę google, a następnie otwieram przeglądarkę, którą działam. To działało idealnie. – Ninja

2

Miałem coś bardzo podobnego do mnie. GPS działałby dobrze na każdym innym urządzeniu, ale powodowałby błąd na urządzeniach Galaxy.

Dowiedziałem się, że uzyskanie pozycji GPS na tych urządzeniach może potrwać do 10 sekund. Musiałem też zmienić wartość na enabledHighAccuracy na false. Oto mój kod.

 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 
     } 

Mam nadzieję, że to pomoże!

1

Mam Samsung Galaxy Trend Plus GT-S7580. Geolokalizacja na mojej stronie nie działa z tym urządzeniem. Wcześniej miał pracę z surfem Asusa i każde ustawienie otwarte dla dostępu do iz Internetu. Gdy tylko pozwoliłem nie tylko na mobilny dostęp do danych, ale także na sieć Wi-Fi i dostęp do Google oraz gromadzenie danych związanych z tym ustawieniem, zaczęło działać. W tym przypadku było to tylko ustawienie.

1

Miałem ten sam problem na moim tablecie Galaxy GT-N8013, getCurrentPosition wydaje się nie działać na Androidzie, ale działa na ios. Aby rozwiązać ten problem, najpierw zwiększyłem limit czasu. Druga, otwarta aplikacja mapy google. Po trzecie, uruchom ponownie tablet. Działa po tym.

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

To zadziałało dla mnie. – Tiois

1

Dla mnie Chrome wydaje się być problemem - przeglądarka nie pozwala na niezabezpieczone źródła, takie jak HTTP. Powinny zostać rozwiązane przez przeniesienie danych przez HTTPS (see Chromium). Pracowałem na moim Galaxy S7 Edge podczas próby w alternatywnej przeglądarce.

Powiązane problemy