2013-07-24 12 views
11

Mam programować Androida z innych platform, z których korzystałem z GPS. na innych platfromach miałem dostęp do GPS HW (miałem niskopoziomowy sterownik GPS) i dzięki temu mogłem otrzymywać aktualizacje GPS 5 razy na sekundę, a nawet więcej Teraz pracuję z Samsung Galaxy S2 (co jest dla mnie jasne że jego GPS jest bardzo silny i może dostarczyć kilka aktualizacji na sekundę Obecnie kiedy ustawić dostawcy GPS do dostarczania aktualizacji w minimalnej odległości i minimalny czas tak:uzyskiwanie najwyższej szybkości aktualizacji GPS ze sprzętu GPS w moim Androidzie

mlocManager.requestLocationUpdates( 
    LocationManager.GPS_PROVIDER, 0, 0, mlocListener 
); 

dostaję 1 aktualizacji na sekundę (lub 800ms jak najmniejsza przerwa między dwiema aktualizacjami), która jest zbyt niska dla mojej aplikacji.Czy jest jakiś sposób zmuszenia GPS HW do zgłaszania większej ilości aktualizacji w jakiś sposób? Wydaje mi się, że nie jest on narażony na użytkownika, ale czy jest jeszcze jakiś sposób dostępu do rejestrów Jakoś GPS HW?

+0

Wątpię, aby uzyskać więcej niż 1hz. Ponadto wątpię, aby Twoja aplikacja nie działała z interweniowaniem 1s. Co z interpolacją? – AlexWien

+0

Mam inny GPS Bluetooth od QStarz, który zrobi 10hz. – user2613743

+0

Rzeczywiście, interpolacja jest jednym rozwiązaniem. Próbuję śledzić lokalizację samochodu, więc 1 sekunda w 100 kmh to ~ 30 metrów i potrzebuję lepszej szczegółowości. również chciałbym wiedzieć (jeśli jakieś ciało wie tutaj), jakie jest opóźnienie obliczenia GPS. Mam na myśli, gdy zgłasza lokalizację, ile czasu minęło od punktu, w którym byliśmy w tej lokalizacji. to również wymaga interpolacji, aby zrozumieć, gdzie jesteśmy teraz na przykład. więc jeśli jest to również w obszarze 1 sekundy lub pół sekundy, więc musimy interpolować 2 sekundy, gdzie jesteśmy teraz i jest to dla mnie naprawdę złe. – user2610687

Odpowiedz

3

Obecnie nie można uzyskać aktualizacji szybciej niż raz na sekundę w większości telefonów. Jest to sprzętowy limit GPS.

Zwykle w większości telefonów jest to 1 godzina.

To wszystko zależy od sprzętu i sytuacji, w której używasz (Indoor, Outdoor)

Ale znowu, można sprawdzić przy użyciu

LocationRequest setFastestInterval (long millis) 

Umożliwia to aplikacja do biernie nabyć lokalizacje się szybciej niż aktywnie pozyskuje lokalizacje, oszczędzając energię.

W przeciwieństwie do setInterval (long), ten parametr jest dokładny. Twoja aplikacja nigdy nie otrzyma aktualizacji szybciej niż ta wartość.

Ta metoda ustawia najszybszą szybkość w milisekundach, z jaką aplikacja może obsługiwać aktualizacje lokalizacji. Musisz ustawić tę stawkę, ponieważ inne aplikacje wpływają również na szybkość wysyłania aktualizacji. Usługi lokalizacyjne wysyłają aktualizacje z najszybszą szybkością, jaką żąda każda aplikacja, wywołując funkcję LocationRequest.setInterval().

Jeśli ta szybkość jest szybsza niż możliwa do obsłużenia przez aplikację, mogą wystąpić problemy z migotaniem interfejsu użytkownika lub przepełnieniem danych.

+0

Czy możesz umieścić link do zasobu, skąd masz informacje o limicie sprzętowym gps? –