2012-12-05 12 views
9

Obecnie pracuję z urządzeniem CLLocationManager i chcę uzyskać informacje na temat bieżącego nagłówka urządzenia. Jak dotąd wszystko działa dobrze, funkcje są zaimplementowane i teraz staram się wypolerować moją aplikację.Jak wykrywać stan przełącznika kalibracji kompasu na iOS

Istnieje przypadek rogu, jeśli użytkownik wyłączy flagę compass calibration w ustawieniach użytkownika aktualizacje pozycji nie będą już wysyłane do mojej aplikacji. W takim przypadku chcę przekazać użytkownikowi informację zwrotną, że musi ponownie włączyć kalibrację kompasu, w przeciwnym razie moja aplikacja nie będzie działać.

Odkryłem, że w przypadku, gdy użytkownik wyłączy location services dla mojej aplikacji, nadal otrzymam nagłówek magnetyczny. Ale jeśli ustawienie "kalibracji kompasu" zostanie zmienione przez użytkownika, nie otrzymam już żadnych aktualizacji pozycji. Ale w jaki sposób mogę zidentyfikować poprzez framework CoreLocation, że "kalibracja kompasu" została wyłączona?

W "CLLocationManagerDelegate" daje mi aktualizacji za pomocą metody

- (void)locationManager:(CLLocationManager*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 

. Ale stan wskazuje tylko, jeśli "usługi lokalizacyjne" są nieaktywne dla mojej aplikacji.

Próbowałem również uzyskać kilka ważnych informacji za pomocą metody

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error 

delegate, bez powodzenia.

Czy jest coś w strukturze CoreLocation, które może mi powiedzieć, czy flaga "kalibracji kompasu" jest włączona/wyłączona.

+1

Czy kiedykolwiek znalazłeś odpowiedź na to pytanie? –

Odpowiedz

4

Z tego, co znalazłem, newHeading.trueHeading w locationManager:didUpdateHeading: powinno być -1, jeśli kalibracja kompasu jest wyłączona. Powinno to zrobić:

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading 
{ 
    if(newHeading.trueHeading == -1) 
     //Compass calibration is off provided location services are on for the app 
} 
+0

Dziękujemy! Dokładnie tego potrzebowałem. Nie używam nagłówka bezpośrednio w mojej aplikacji (używam Core Motion), więc nawet nie wdrożyłem metody "didUpdateHeading" i nie przyglądałem się odpowiedniej dokumentacji tak dokładnie, jak powinienem. –

+0

Cieszę się, że mogłem pomóc :) – Rick

Powiązane problemy