2014-02-12 46 views
2

我正在使用iPhone的磁力計和加速計在一起的應用程序。我注意到的問題是,當設備向後傾斜時,它會碰到一個臨界點,在這個點上標題值被顛倒(iOS似乎認爲設備已經旋轉了)。起初,我認爲這很簡單,因爲檢查設備的方向改變時([UIDevice currentDevice].orientation),但*標題值在發送設備方向更改通知之前(至少15度傾斜)顯着反轉。CLLocationManager標題與傾斜設備

我道歉,如果這個描述是混亂的,但你可以很容易地看到我的問題有如下的實驗:

打開iPhone上的指南針的應用程序和校準羅盤。一旦校準完畢,以縱向模式豎直拿着iPhone,底部在屏幕下方。現在向後緩慢傾斜手機(使相機朝上更直接)。你會發現指南針突然顛倒了方向。不幸的是,這一點與操作系統識別設備方向改變的點不相關。

我的問題是,我需要繼續在原始方向註冊標題,因爲我實際上並沒有將設備轉過來,而且顯然仍然指向前方(原始方向)。我已經在這個臨界點測試了設備的角度,並且通過這種方式獲得了一些成功的修正,但是由於來自加速度計的噪音,我在臨界角附近產生了非常不安的結果。我還嘗試了位置經理的headingOrientation屬性,但沒有成功。如果有人找到了解決這個問題的辦法,那將非常感謝!

乾杯。

+0

你解決了這個問題嗎? –

回答

0

爲什麼你需要這個有點多背景會有助於提供更好的答案。 當你描述移動時,設備的頂部實際上指向相反的方向。
爲了彌補這一點,您需要添加一個過濾器,並根據設備角度和標題的先前狀態確定設備角度和標題的新狀態。知道設備角度接近關鍵階段,並且知道方向突然顛倒180°,可以讓您區分這種情況。您可以將陀螺儀信息添加到濾波器以使用設備旋轉速率,並確定設備正在超過臨界角度移動。

+0

我已經確定了臨界角度是什麼,並且目前正在根據該假設對其進行過濾,但不幸的是,由於加速度計在設備非常接近臨界角度很長一段時間時不準確,因此航向振盪回來並且向前。我想知道是否有辦法接收地理位置經理正在做180度更正的通知。 –