我正在使用CMMotionManager和HKWorkoutSession开发苹果手表应用程序,以获取加速计和心率数据。该应用程序在短时间内(70秒)运行良好,但当屏幕关闭时,心率和加速计数据都会停止。
我的问题是如何从加速计和心率传感器获得5分钟的数据?
发布于 2015-12-23 05:11:34
要在应用程序转到后台时花费更多时间,您可以使用performExpiringActivityWithReason。这是在这里描述的https://developer.apple.com/videos/play/wwdc2015/228/?time=345在我的手表上它只需要大约30秒
NSProcessInfo.processInfo().performExpiringActivityWithReason("Reason") {
expired in
if !expired {
let delay: Int64 = 30
let delayTime = dispatch_time(DISPATCH_TIME_NOW, delay * Int64(NSEC_PER_SEC))
dispatch_semaphore_wait(semaphore, delayTime)
} else {
dispatch_semaphore_signal(semaphore)
}
}发布于 2015-12-29 01:03:36
自watchOS 2发布以来,HKWorkoutSession是在手表屏幕关闭时保持应用程序运行的唯一方法。但是,该应用程序处于挂起状态。计时器和任何其他进程的执行都会暂停,直到屏幕重新打开。但是,应用程序的内存分配是保留的。在应用程序暂停期间,该设备的硬件仍在收集数据并将其存储在手表的硬盘上。当屏幕重新打开时,应用程序会从挂起状态中恢复,此时硬件收集的所有数据都会返回给应用程序(假设订阅了相应的侦听器)。
目前还没有办法在屏幕关闭后继续将手表中的心率数据(或任何数据)发送到iPhone。
发布于 2015-12-23 06:24:40
watchOS 2不允许在屏幕关闭时运行应用程序。虽然有一些方法可以让你获得一点额外的时间,比如使用performExpiringActivityWithReason,但没有办法确保你的应用程序运行完整的5分钟。
https://stackoverflow.com/questions/34407740
复制相似问题