2016-05-05 30 views
0

我想弄清楚最準確的方式來檢測手機前進和計數。到目前爲止,我已經能夠計算每次加速度計加速度超過某個雙倍的速度,但它不是非常準確,因爲我必須做的事情是讓計數器向上傾斜,而不是讓手機實際移動。我怎樣才能達到我想要的?我應該添加更多像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)" 

     } 

回答

1

你可以做的是計算採用正方形的X,Y和Z的總和的平方根當前加速幅度。在休息時,無論手機如何定向,該值都將保持不變(地球的引力)。如果有人打電話或拿起電話,那麼這個大小會暫時改變,你可以檢測到這個增量。在檢測之前,您可能需要稍微過濾這個量級,具體取決於您嘗試檢測的移動量有多小。

+0

謝謝我要試一試。昨天我添加了x和z軸,這有助於提高精度。 –