【发布时间】:2023-03-18 03:26:01
【问题描述】:
我在我的应用上使用核心动作。我将 motionManager 对象分配给我的主类上的一个属性。类似的东西
@property (nonatomic, retain) CMMotionManager *motionManager;
每次我将使用核心运动时,我都会使用以下方式分配它:
- (void) initializeCoreMotion {
CMMotionManager *myMotionManager = [[CMMotionManager alloc] init];
self.motionManager = myMotionManager;
[myMotionManager release];
}
然后,在对该数据进行采样的方法上,我使用它来读取样本的时间戳。
CMDeviceMotion *motion = self.motionManager.deviceMotion;
timestamp = motion.timestamp;
if (firstTime) {
timestampReference = timestamp;
firstTime = NO;
} else {
timestamp = timestamp - timestampReference;
}
即:第一次采样时,存储初始值。随后的采样时间,它将从引用中减去当前值,以了解经过了多少秒。
问题是这样的。假设我每秒采样一次。我先采样 10 秒。所以时间戳变量会像 0, 1, 2, 3, 4, 5...10。然后我停下来,不采样 20 秒。当我再次开始采样时。第二次,时间戳将从 31、32、33、34 开始...
我检查了采样方法,每次第一次采样时 firstTime 都是 YES...
有什么想法吗?如何重置?
谢谢。
【问题讨论】:
标签: iphone core-motion