在指定的时间间隔使用 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 数据的主要内容,如果未能解决你的问题,请参考以下文章

iOS核心笔记—CoreLocation框架-基础

如何在指定的时间间隔使用 shift 填充 pandas 中的缺失值?

以指定的时间间隔定期运行异步方法

如何在指定的时间间隔内找到数字的除数?

间隔计时器未在指定时间间隔触发信号

NSTimer 在指定的时间间隔后不会调用选择器。 iOS