gpt4 book ai didi

ios - 如何用 CMMotionManager 替换 UIAccelerometer?

转载 作者:行者123 更新时间:2023-12-03 19:51:21 28 4
gpt4 key购买 nike

我是 iOS 开发新手。

我按照 Ray Wenderlich 的教程进行操作创建一个基于位置的小型 AR 应用程序。但是,本教程使用 AR Toolkit已经有一段时间没有更新了。它使用的 UIAccelerometer 自 iOS 5 以来已被弃用,因此当我尝试在 iPhone(iOS 7.0.4)上运行它时,Xcode 表示有 3 个警告,并且所有警告都是由 UIAccelerometer 引起的。 warnings

它导致的结果是所有标记都停留在屏幕中央,一层一层地放置,并且倾斜根本不起作用。 problems

根据我的研究,我想我需要做的是使用 CMMotionManager 而不是 UIAccelerometer,但正如我之前所说,我对 iOS 开发完全陌生,不知道如何替换它。

这是source code 。我添加了一些小函数,以便您可以手动添加 Google 数据库中没有的位置,但我不认为是这些函数导致了问题。

感谢您提前提供帮助!

最佳答案

尝试此链接:https://www.inkling.com/read/learning-ios-programming-alasdair-allan-2nd/chapter-9/the-core-motion-framework

我正在学习一些与 UIAccelerometer 相关的花絮

[self setAccelometerManager [UIAccelerometer sharedAccelerometer]];

可能成为

[self.motionManager = [[CMMotionManager alloc] init];

设置手动更新间隔,例如

[[self accelerometerManager] setUpdateInterval: 0.25];

你可以拥有

self.motionManager.accelerometerUpdateInterval = 0.25;

并释放委托(delegate)

self.accelerometerManager.delegate = nil;

现在是

[self.motionManager stopDeviceMotionUpdates];

同样从链接中,我最终做了这样的事情:

motionManager = [[CMMotionManager alloc] init];

motionManager.accelerometerUpdateInterval = 1.0/10.0; // Update at 10Hz

if (motionManager.accelerometerAvailable) {
queue = [NSOperationQueue currentQueue];
[motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
switch (currentOrientation) {
case UIDeviceOrientationLandscapeLeft:
viewAngle = atan2(accelerometerData.acceleration.x, accelerometerData.acceleration.z);
break;
case UIDeviceOrientationLandscapeRight:
viewAngle = atan2(-accelerometerData.acceleration.x, accelerometerData.acceleration.z);
break;
case UIDeviceOrientationPortrait:
viewAngle = atan2(accelerometerData.acceleration.y, accelerometerData.acceleration.z);
break;
case UIDeviceOrientationPortraitUpsideDown:
viewAngle = atan2(-accelerometerData.acceleration.y, accelerometerData.acceleration.z);
break;
default:
break;
}
[self updateCenterCoordinate];
}];

}

关于ios - 如何用 CMMotionManager 替换 UIAccelerometer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20340384/

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