我正在尝试找出最准确的方法来检测手机何时向前移动并计算它。到目前为止,我已经能够计算每次加速度计y加速度超过一定的两倍,但它不是非常准确,因为所有我必须做的使计数器上升是向前倾斜手机而不是让手机实际移动。我怎样才能实现我的目标?我应该添加更多变量,如x或z轴,还是需要在手机中加入陀螺仪或其他功能,我目前没有使用?感谢
到目前为止,这是我的代码:
`override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
motionManager.accelerometerUpdateInterval = 0.1
motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: { (accelerometerData: CMAccelerometerData?, error: NSError?) -> Void
in
self.outputAccelData(accelerometerData!.acceleration)
if error != nil {
print(error)
}
})
func outputAccelData(acceleration: CMAcceleration) {
if acceleration.y > 0.3 {
countInt += 1
}
count.text = "\(countInt)"
}
答案 0 :(得分:1)
你可以做的是使用x,y和z的平方和的平方根来计算当前的加速度大小。静止时,无论手机如何定位,这个值都将保持不变(地球的引力)。如果有人点击或拿起电话,那么此幅度将暂时改变,您可以检测到该增量。您可能需要在检测之前稍微过滤此幅度,具体取决于您尝试检测的移动量。