- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试 CoreMotion 的新功能,最重要的是设置引用系的可能性,但如果我使用 DeviceMotionHandler 并将引用系设置为 CMAttitudeReferenceFrameXTrueNorthZVertical,则输出是 CMAttitudeReferenceFrameXArbitraryCorrectedZVertical 的一部分。我用 iphone 启动应用程序时总是以相同的偏航旋转尊重我的 table ,我测试了不同的初始偏航旋转,但结果总是一样的。
motionManager = [[CMMotionManager alloc] init];
motionManager.showsDeviceMovementDisplay = YES;
motionManager.deviceMotionUpdateInterval = 1.0/60.0;
CMDeviceMotionHandler motionHandler = ^ (CMDeviceMotion *motion, NSError *error) {
NSLog(@"%f %f %f", motion.attitude.pitch, motion.attitude.roll, motion.attitude.yaw);
};
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:[NSOperationQueue currentQueue] withHandler:motionHandler];
我找到了我的问题的解决方案,但我不明白为什么以前的代码不起作用。我在 motionHandler 中只添加了一个 CMAttitude 变量 *a。
- (void)viewDidLoad
{
[super viewDidLoad];
motionManager = [[CMMotionManager alloc] init];
motionManager.showsDeviceMovementDisplay = YES;
motionManager.deviceMotionUpdateInterval = 1.0/60.0;
CMDeviceMotionHandler motionHandler = ^ (CMDeviceMotion *motion, NSError *error) {
CMAttitude *a = motionManager.deviceMotion.attitude;
labelAngle.text = [NSString stringWithFormat:@"%f %f %f",a.pitch, a.roll,a.yaw];
labelAngle2.text = [NSString stringWithFormat:@"%f %f %f", motion.attitude.pitch, motion.attitude.roll, motion.attitude.yaw];
};
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:[NSOperationQueue currentQueue] withHandler:motionHandler];}
最佳答案
我认为这是因为.. 如果您先定义处理程序,则运动对象的态度属性已经设置为默认值。稍后在您自己的代码中,此态度属性变为只读。因此,当您使用此处理程序开始运动更新时,运动的姿态属性将不再可以更改。但是 motionManager.deviceMotion 的态度属性设置为您在 startDeviceMotionUpdatesUsingReferenceFrame 中指定的任何值,并且当您使用 startDeviceMotionUpdatesUsingReferenceFrame 开始运动更新时,它会被读入对象。 a 对象现在具有正确的姿态,而 motion 对象具有默认姿态。
关于iphone - 带有引用框架的 CoreMotion iOS 5 态度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918091/
我正在尝试使用 CoreMotion 获取设备加速。我有这个代码: 用于设置 if (motionManager == nil) motionManager = [[CMMotionM
我正在使用 CoreMotion 获取罗盘航向,我注意到罗盘航向存在一些问题。 首先我初始化了 CoreMotion。我得到了一个 CMMotionManager 对象 locationManager
以下是我在 vievDidLoad 中的代码 CMMotionManager *motionmanager = [[[CMMotionManager alloc]init]autorelease];
我试图使用内置加速度计在 x 轴上移动播放器,但出了点问题。当我在我的 iPhone 上模拟应用程序时,节点会向各个方向移动,只有在我关闭应用程序并再次启动它 2-3 次后,节点才会从左向右移动,这正
import UIKit import CoreMotion class ViewController: UIViewController { @IBOutlet weak var label
startDeviceMotionUpdatesUsingReferenceFrame CMAttitudeReferenceFrame 有什么区别 XArbitraryZVertical XArbi
我一直在我编写的应用程序中使用一些 CoreMotion(计步器)数据。早些时候,我授予了应用程序数据访问权限,一切运行良好。 现在我要编写请求用户许可的部分,但由于我已经授予了权限,所以对话框永远不
是否可以使用 CoreMotion 的数据计算 iPhone 移动时的高度差? 例如,保存 iPhone 的初始位置,然后移动 iPhone,从而得到新的位置。我有兴趣检测 iPhone 的高度是否从
借助最新 iOS 设备中的 M7 芯片,当用户使用 CMMotionActivityManager 从静止状态变为运行、步行等状态时,可以通过编程方式获得通知。 Stava 和 Runkeeper 都
在 iOS CoreMotion Framework 中,我可以设置加速度计、磁力计等的频率间隔,并以指定的间隔捕获数据。但文档中提到,最小和最大频率取决于设备的硬件。我怎么知道我可以提供的最小和最大
这是我所做的: motion_manager.startAccelerometerUpdates(to: OperationQueue.current! , withHandler: { (
我需要使用 Core Motion 获取用户在后台的事件。我通过将位置更新添加为后台模式并启用后台位置获取来实现此目标。但由于我对用户位置不感兴趣,这会导致电池浪费,并且会出现一个蓝色标志(iPhon
当在 iPhone 5S 上使用来自 M7 运动协处理器的数据时,我看到一些类让用户授予应用程序权限,(有点像他们对 GPS 使用或照片库所做的) 有谁知道哪些核心运动类要求用户允许运动访问,因为我想
我正在尝试编写一个简单的应用程序,让我可以使用 CoreMotion API 跟踪我在设定天数内的平均步行时间。 CMPedometer API 允许访问上次 session 的开始日期和结束日期。我
我想使用 CoreMotion(如果可能,不是 CoreLocation)计算指南针指向真北的航向。我找到了一些公式,但只有当手机平放在 table 上时才有效。谁能帮我找到一种计算罗盘航向的方法,它
在Info.plist中添加“Privacy - Motion Usage Description”后 我运行了它并且成功了,甚至在第一次运行时请求了许可,但我拒绝了许可,现在我卡住了,因为我找不到如
我正在注册以接收来自 CMMotionManager 的更新,如下所示: motionManager.startDeviceMotionUpdatesToQueue(deviceMotionQueue
是否可以使用 CoreMotion 计算小距离? 例如,用户向上或向下、向左和向右移动他的 iOS 设备并面向他面前的设备(横向)。 最佳答案 编辑 按照 promise 链接... https://
我正在制作类似增强现实应用程序的东西,其中我有一个 OpenGL 场景,无论 iOS 设备如何移动,我都希望它与重力保持一致。我以为我已经通过 CMDeviceMotion.attitude.pitc
Apple 的文档CMAttitudeReferenceFrame说一些引用系“可能需要移动设备来校准磁力计”但没有详细说明。 如何确定磁力计当前是否需要校准? 最佳答案 CMDeviceMotion
我是一名优秀的程序员,十分优秀!