- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
是否可以使用 CoreMotion 的数据计算 iPhone 移动时的高度差?
例如,保存 iPhone 的初始位置,然后移动 iPhone,从而得到新的位置。我有兴趣检测 iPhone 的高度是否从其初始位置移动。我不需要绝对单位,只需要一个相对值,表示高度相对于原始高度的变化百分比。
let manager = CMMotionManager()
// Save initial attitude
var initialAttitude = manager.deviceMotion.attitude
if manager.deviceMotionAvailable {
manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {
[weak self] (data: CMDeviceMotion!, error: NSError!) in
// Get the difference between the initial and new attitude
data.attitude.multiplyByInverseOfAttitude(initialAttitude)
// Is there a way to calculate the relative change in height?
}
}
最佳答案
在较新的 iPhone 上,确实可以从随附的气压计(从 iphone 6 开始提供)中获取相对高度。 Core Motion 已扩展以适应这种情况。
CMAltimeter
- 提供高度变化事件的传递。
CMAltitudeData
- 封装高度变化事件(以米级分辨率)。
这种东西应该可以工作...
if CMAltimeter.isRelativeAltitudeAvailable() {
altimeter.startRelativeAltitudeUpdatesToQueue(altimeterQueue,
withHandler:
{ ( data:CMAltitudeData?,
error: NSError?) in
if let altitudeData = data {
self.timeStamp = altitudeData.timestamp
self.relativeAltitude = altitudeData.relativeAltitude
}
}
)
}
我们没有得到绝对高度,只有相对高度变化。初始高度被视为 0。因此您无法真正获得百分比变化(没有任何意义),但您可以获得米级精度的绝对变化。
关于iOS CoreMotion - 计算高度差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36038491/
我正在尝试使用 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
我是一名优秀的程序员,十分优秀!