我有以下ViewController
import UIKit
import CoreMotion
class ViewController: UIViewController {
let motion = CMMotionManager()
var timer: Timer!
func handleTick(timer: Timer) -> Void {
guard let acceleration = self.motion.deviceMotion?.userAcceleration else {
return
}
print(acceleration.x)
}
override func viewDidLoad() {
super.viewDidLoad()
self.motion.deviceMotionUpdateInterval = interval
self.motion.startDeviceMotionUpdates()
self.timer = Timer(fire: Date(), interval: interval, repeats: true, block: self.handleTick)
RunLoop.current.add(self.timer, forMode: .default)
}
}
A354290336370468 J-05
-7.16252252459526e-05
-0.000555720180273056
-0.00029446836560964584
0.00029974430799484253
0.00016765855252742767
P 0.846362233161926Ĵ-05
-0.0004231613129377365
0.0002309028059244156
-0.00043283402919769287
这些值不为零,这使得速度计算在不断变化时变得棘手。
什么是摆脱这些明显动作的最佳方法?显然我可以删除接近零的任何东西,但什么是正确的“最小”值?
将设备稳定放置一两分钟而不触摸它并记录您获得的值。 检查您获得的最大值,添加20-30%并将其用作阈值。 如果您打算在车辆中使用您的应用程序,您应该在车内找到阈值。