gpt4 book ai didi

ios - 在后台收集加速度计数据

转载 作者:行者123 更新时间:2023-11-30 13:57:06 24 4
gpt4 key购买 nike

我正在编写一个应用程序,每次手机移动时都必须进行一些计算。我已阅读此处的每个问题,但无法让加速计在后台收集数据(在用户离开应用程序后)。我已在 Plist.info 中设置了位置更新 标志。这是我正在使用的代码:

let motionManager = CMMotionManager()

func startMotionUpdates() {
var timestamps = [NSDate]()

if motionManager.accelerometerAvailable {
motionManager.accelerometerUpdateInterval = 1
motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue(), withHandler: { (data: CMAccelerometerData?, error: NSError?) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
let time = NSDate(timeIntervalSince1970: data!.timestamp)
timestamps.append(time)
print(timestamps)
})
})
}
}

我尝试了所有的组合,我尝试过使用CMDeviceMotion,我尝试过使用CLLocationManager.startUpdatingLocation()来模拟后台事件,但没有任何效果。有人有什么想法吗?

最佳答案

每次加速度计发生变化时,您都无法被唤醒。每当设备位置发生显着变化(至少几米)时,您都可以使用 CLLocationManager 被唤醒,这就是“位置”在后台模式中的含义。

要跟踪更细粒度的运动信息,您需要要求系统开始使用 CMSensorRecorder 记录数据,然后您可以请求数据并从中计算出您想要的内容。但是您将不被允许在后台运行,连续观察设备的每一次抖动。那会消耗太多电池。

另请参阅CMPedometer,它更直接地解决某些用例。

关于ios - 在后台收集加速度计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33482756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com