2016-03-01 76 views
0

我的應用需要(儘可能精確地)記錄用戶的位置和運動隨着時間的推移。如果我讓設備進入睡眠狀態,GPS精度似乎會自動降低。我可以阻止它睡覺,但顯然這是電池進一步耗盡。我希望允許顯示器進入睡眠狀態,但要保持位置管理器的最高準確性。我在後臺模式部分勾選了位置更新。我的代碼看起來像這樣...如何在設備睡眠時保持全功率GPS

locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation 
    locationManager.distanceFilter = 1 
    locationManager.activityType = .Fitness 
    locationManager.requestAlwaysAuthorization() 
    locationManager.pausesLocationUpdatesAutomatically = false 
    locationManager.startUpdatingLocation() 

     UIApplication.sharedApplication().idleTimerDisabled = true 

我真的想刪除最後一行,但我已經在4秒鐘完成測試表明,只要設備睡它失去準確性。

+0

您能否定義「位置管理器失去準確性」?您究竟如何定義精確度 - 是報告位置的水平精度,距離過濾器還是其他? –

+0

是的,謝謝你的迴應。我正在測量水平精度(.horizo​​ntalAccuracy)。 – Melchester

+0

您能否告訴我們。從前景到背景以及最後進入暫停模式時,.horizo​​ntalAccuracy會發生怎樣的變化?你可以發佈樣本讀數 - 我只對三個變量感興趣:horizo​​ntalAccuracy,速度和時間戳。 –

回答

0

假設它的iOS 9你還需要這條線:

locationManager.allowsBackgroundLocationUpdates = TRUE;

默認情況下,此var設置爲false,這意味着iOS不會將位置更新提供給暫停的應用程序。

+0

我是瞄準iOS 8.你碰巧知道是否有一種方法可以使用該版本? – Melchester

+0

allowsBackgroundLocationUpdates變量只是允許覆蓋iOS9引入的新電池保存行爲,並恢復到iOS8操作模式。 –

相關問題