【问题标题】:Gyroscope updates not starting陀螺仪更新未开始
【发布时间】:2011-09-29 23:59:09
【问题描述】:

我正在创建接收陀螺仪俯仰、滚动和偏航的测试应用程序。

此代码无法正常工作:

- (void) enableGyro {
    motionManager.deviceMotionUpdateInterval = 1.0/30.0;
    if (motionManager.gyroAvailable) {
        [motionManager startGyroUpdates];
    }
    NSLog(@"Gyro Available? %@", (motionManager.gyroAvailable ? @"YES" : @"NO"));
    NSLog(@"Gyro Active? %@", (motionManager.gyroActive ? @"YES" : @"NO"));
}

输出是

2011-09-29 16:37:08.070 Gyro2[4014:607] Gyro Available? YES
2011-09-29 16:37:08.074 Gyro2[4014:607] Gyro Active? NO

我不明白为什么,当我开始更新陀螺仪时,它实际上并没有启动。

【问题讨论】:

标签: iphone ios gyroscope


【解决方案1】:

如果您真的想使用原始无偏传感器数据,则必须独立设置每个传感器的更新间隔,尽管它们通常是相同的值:

motionManager.gyroUpdateInterval = myGyroInterval;
motionManager.accelerometerUpdateInterval = myAccelerometerInterval;

deviceMotionUpdateInterval 仅绑定到设备动作。

大多数人不想使用卡尔曼滤波器等处理传感器数据,而只想处理设备的当前方向。如果是这种情况,请查看 Simple iPhone motion detect.

我看到 CMMotionManager 的 xxxActive 方法的值没有报告正确状态的唯一情况是将应用程序置于后台并在自己的 NSThread 中完成运动处理时再次激活它。我认为这与操作系统所做的某些操作有关,可能与某种赛车条件相结合。诀窍是释放 CMMotionManager 实例并分配一个新实例。

【讨论】:

    【解决方案2】:

    根据文档 (http://developer.apple.com/library/ios/#DOCUMENTATION/CoreMotion/Reference/CMMotionManager_Class/Reference/Reference.html),gyroActive 仅在您调用 @ 时为真987654322@ 或startGyroUpdates。即使startDeviceMotionUpdates使用了陀螺仪,它也没有设置gyroActive

    【讨论】:

    • 我在帖子里也改了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    相关资源
    最近更新 更多