如何在设备休眠时保持 GPS 处于全功率状态
Posted
技术标签:
【中文标题】如何在设备休眠时保持 GPS 处于全功率状态【英文标题】:How to keep gps at full power while device sleeps 【发布时间】:2016-06-13 11:20:34 【问题描述】:我的应用需要(尽可能准确地)记录用户在一段时间内的位置和移动。如果我让设备休眠,GPS 精度似乎会自动降低。我可以阻止它进入睡眠状态,但显然这会进一步消耗电池。我想让显示器休眠,但保持位置管理器的最大精度。我在后台模式部分勾选了位置更新。我的代码看起来像这样...
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.distanceFilter = 1
locationManager.activityType = .Fitness
locationManager.requestAlwaysAuthorization()
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.startUpdatingLocation()
UIApplication.sharedApplication().idleTimerDisabled = true
我真的很想删除最后一行,但我在 4s 上所做的所有测试表明,一旦设备进入睡眠状态,它就会失去准确性。
【问题讨论】:
您能否定义“位置管理器失去准确性”?您在此处如何准确定义精度 - 报告位置的水平精度、距离过滤器还是其他? 是的,感谢您的回复。我正在测量水平精度 (.horizontalAccuracy)。 你能告诉我.horizontalAccuracy在从前台到后台最后到挂起模式时是如何变化的吗?你能发布样本读数吗?我只对三个变量感兴趣:horizontalAccuracy、speed 和 timestamp。 我已将我的应用程序更改为 9.0 并使用您的答案解决了问题。它运作良好。谢谢。 【参考方案1】:假设是 ios 9,你还需要这一行:
locationManager.allowsBackgroundLocationUpdates = true;
默认情况下,此 var 设置为 false,这意味着 iOS 不会向暂停的应用提供位置更新。
【讨论】:
我的目标是 iOS 8。你知道是否有办法使用那个版本吗? allowBackgroundLocationUpdates 变量只允许覆盖 iOS9 引入的新电池保护行为并恢复到 iOS8 操作模式。以上是关于如何在设备休眠时保持 GPS 处于全功率状态的主要内容,如果未能解决你的问题,请参考以下文章
如何在应用程序处于后台时保持GPS接收器位置更新(Google Play服务位置API)