2016-05-05 12 views
0

Ich versuche herauszufinden, die genaueste Möglichkeit zu erkennen, wenn das Telefon vorwärts bewegt und zählen Sie es. Bis jetzt war ich in der Lage zu zählen, jedes Mal, wenn der Beschleunigungsmesser y Beschleunigung über ein bestimmtes Doppeltes geht, aber es ist nicht sehr genau, da alles, was ich machen muss, den Zähler nach oben gehen lässt, neigt das Telefon vorwärts, anstatt das Telefon tatsächlich zu bewegen. Wie kann ich erreichen, was ich will? Sollte ich weitere Variablen wie die X- oder Z-Achse hinzufügen oder muss ich das Gyroskop oder ein anderes Feature in das Telefon integrieren, das ich momentan nicht verwende? DankAccelerometer zum Detektieren von Telefon Bewegung

Das ist mein Code so weit:

`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)" 

     } 

Antwort

1

Was Sie tun können, ist eine aktuelle Beschleunigungsgröße, die Quadratwurzel aus der Summe der Quadrate für x, y und z mit berechnen. In Ruhe ist dieser Wert konstant (Erdanziehungskraft), egal wie das Telefon ausgerichtet ist. Wenn jemand das Telefon anschlägt oder aufhebt, ändert sich diese Größe vorübergehend und Sie können dieses Delta erkennen. Möglicherweise müssen Sie diese Größe vor der Erkennung etwas filtern, je nachdem, wie klein die Bewegung ist, die Sie ermitteln möchten.

+0

Danke Ich werde das ausprobieren. Gestern habe ich die X- und Z-Achsen hinzugefügt und es hat mir bei der Genauigkeit geholfen. –