Search code examples
iosiphonexcodegravitymotion

iOS Motion Detection: Count of times the device moves up and down


How can i use the gravity or motion sensors inside iPhone to calculate how many times the device moved up and down. e.g. as if it were lifted like a dumbbell for a couple of times, i wanted to count it.

Forgive me if this is something very simply achievable but I'm pretty new to iOS development and hence the question.


Solution

  • You need to use the Core Motion framework to access the gyroscope and accelerometer data.

    let manager = CMMotionManager()
    if manager.gyroAvailable {
      // CMMotionManager is available.
      manager.gyroUpdateInterval = 0.1
      manager.startGyroUpdates()
    
      // get gyro data...
      let queue = NSOperationQueue.mainQueue
      manager.startGyroUpdatesToQueue(queue) {
         (data, error) in
         // ... get data here
      }
    }
    
    // accelerometer data
    if manager.accelerometerAvailable {
       manager.accelerometerUpdateInterval = 0.01
       manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) {
          [weak self] (data: CMAccelerometerData!, error: NSError!) in
          // get data here ...
       }
    }
    

    Combining those 2 you can get the detection going. Experiment with the results until you get the right motion you want.