在指定的时间间隔使用 CoreLocation 在后台检索 CoreMotion 数据
Posted
技术标签:
【中文标题】在指定的时间间隔使用 CoreLocation 在后台检索 CoreMotion 数据【英文标题】:Retrieving CoreMotion data in background with CoreLocation at a specified time interval 【发布时间】:2017-05-24 16:10:35 【问题描述】:我有一个汽车应用程序需要在前台和后台以指定的时间间隔(0.5 秒)跟踪 CoreMotion 和 CoreLocation 数据。用户控制跟踪的开始和停止,因此我们不必担心电池寿命问题。这是我目前拥有的:
var locationManager:CLLocationManager?
var motionManager:CMMotionManager?
override init()
super.init()
locationManager = CLLocationManager()
motionManager = CMMotionManager()
locationManager?.delegate = self
locationManager?.allowsBackgroundLocationUpdates = true
//Call this to start tracking
func startTracking()
motionManager?.startDeviceMotionUpdates()
locationManager?.startUpdatingLocation()
//Call this to stop tracking
func stopTracking()
locationManager?.stopUpdatingLocation()
motionManager?.stopDeviceMotionUpdates()
//Using CoreLocation delegate method to retrieve both motion and location data.
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
if let location = locations.last
if let data = motionManager?.deviceMotion
print("Data: \(data) Location:\(location)")
我现在遇到的这个问题是我无法控制位置更新的频率以获取我的 CoreMotion 数据。我需要在后台每 0.5 秒跟踪一次 CoreMotion 数据,CoreLocation 数据不必很频繁。有没有更好的方法来做到这一点?
【问题讨论】:
【参考方案1】:抱歉回复晚了,但要设置更新间隔,您应该写:
motionManager.deviceMotionUpdateInterval = 0.5
【讨论】:
以上是关于在指定的时间间隔使用 CoreLocation 在后台检索 CoreMotion 数据的主要内容,如果未能解决你的问题,请参考以下文章