- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 CMDeviceMotion 的 userAcceleration 字段中看到一些意外读数。当我查看来自 CMAccelerometerData 的原始加速度计数据时,我发现如果 iPhone 平放在 table 上,则读数为 1G 垂直向下(-Z 轴上为 1G),如果我将 iPhone 掉落(当然是在柔软的表面上)然后acceleromtere 读数按预期变为零。没关系。当我改为使用 CMDeviceMotion 类时,当 iPhone 平放在 table 上时,userAcceleration 读数如预期的那样为零。这也很好。但是当我放下 iPhone 并读取 CMDeviceManager userAcceleration 时,userAcceleration 值是 1G 直线上升 (+Z) 而不是预期的下降 (-Z)。 userAcceleration 读数似乎与设备实际经历的加速度正好相反。还有其他人观察到这个吗?在尝试对速度和位置进行积分之前,我是否可以只反转(乘以 -1)所有 userAcceleration 值,或者我是否误解了 userAcceleration 正在读取的内容?
最佳答案
CMAccelerometerData.acceleration 之间存在一些概念差异和 CMDeviceMotion.userAcceleration
因此,如果您想比较两者,您必须检查 CMAccelerometerData.acceleration
与 CMDeviceMotion.userAcceleration + CMDeviceMotion.gravity
以进行比较。
一般而言,在大多数情况下,当您需要精确的值和硬件独立性时,CMDeviceMotion 是您的首选。
要考虑的另一件事是 CMAttitudeReferenceFrame您在通过 startDeviceMotionUpdatesUsingReferenceFrame 启动 Device Motion 更新时提供.我不确定使用基本版本时的默认值是什么 startDeviceMotionUpdates
您声明要对这些值进行积分以获得速度和位置。关于这个有几个讨论,最重要的是我可以说不可能得到合理的结果。见:
如果您的应用概念迫使您依赖精确结果超过半秒,请尝试改变它。
关于ios - CMDeviceMotion userAcceleration 颠倒了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16527593/
我正在创建一个使用 CMDeviceMotion.userAcceleration 值的 iOS 应用程序。也就是说,用户在没有重力的情况下给予设备的加速度。 我只是想知道,返回的加速度值采用什么测量
我在 CMDeviceMotion 的 userAcceleration 字段中看到一些意外读数。当我查看来自 CMAccelerometerData 的原始加速度计数据时,我发现如果 iPhone
嗨,我想获取 iPhone 的加速度,但我不希望 iPhone 倾斜时加速度值发生变化。我认为答案是用户加速。但我不知道如何获取 userAcceleration 值。我知道我必须使用核心运动并使用
我是一名优秀的程序员,十分优秀!