我是iOS开发的新手。
我按照Ray Wenderlich的教程创建了一个基于位置的小AR应用程序。但是,本教程使用的AR Toolkit已经有一段时间没有更新过了。它使用的UIAccelerometer从iOS 5开始就被弃用了,所以当我尝试在我的iPhone (iOS 7.0.4)上运行它时,Xcode告诉我有3个警告,所有的警告都是由UIAccelerometer引起的。

它导致的结果是,所有的标记都停留在屏幕的中心,一个接一个,倾斜完全不起作用。

根据我的研究,我想我需要做的是使用CMMotionManager而不是UIAccelerometer,但正如我之前所说的,我对iOS开发完全陌生,不知道如何取代它。
这是source code。我添加了一些小函数,以便您可以手动添加Google数据库中没有的位置,但我不认为是这些函数导致了问题。
感谢您的提前帮助!
发布于 2014-02-13 08:20:45
我正在学习一些花边新闻来翻译一些--使用UIAccelerometer
即
[self setAccelometerManager [UIAccelerometer sharedAccelerometer]];可能会变成
[self.motionManager = [[CMMotionManager alloc] init];设置手动更新间隔,如
[[self accelerometerManager] setUpdateInterval: 0.25];你可以拥有
self.motionManager.accelerometerUpdateInterval = 0.25;并释放委托
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];
}];
}https://stackoverflow.com/questions/20340384
复制相似问题