You should look into getting the data from the accelerometer.
Here is an example of, how you could retrieve the information.
let motionManager = CMMotionManager()
if motionManager.isAccelerometerAvailable {
let queue = OperationQueue()
motionManager.startAccelerometerUpdates(to: queue, withHandler:
{
data, error in guard let data = data else { return }
print("X = \(data.acceleration.x)")
print("Y = \(data.acceleration.y)")
print("Z = \(data.acceleration.z)")
}
)
} else {
print("Accelerometer is not available")
}
Dont forget to import CoreMotion!
Updated solution
Here is a working example of how to get the accelerometer data, if the device is moving with over 10 km/h.
import UIKit
import CoreMotion
import CoreLocation
class ViewController: UIViewController {
var timer = Timer()
var locationManager = CLLocationManager()
let motionManager = CMMotionManager()
override func viewDidLoad() {
super.viewDidLoad()
scheduledTimerWithTimeInterval() //Calling function with timer
// Do any additional setup after loading the view, typically from a nib.
}
func scheduledTimerWithTimeInterval(){
// Scheduling timer to Call the function **getSpeed** with the interval of 1 seconds
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.getSpeed), userInfo: nil, repeats: true)
}
func getSpeed(){
var speed: CLLocationSpeed = CLLocationSpeed()
speed = Double((locationManager.location?.speed)!)
print(String(format: "%.0f km/h", speed * 3.6)) //Current speed in km/h
//If speed is over 10 km/h
if(speed * 3.6 > 10 ){
//Getting the accelerometer data
if motionManager.isAccelerometerAvailable{
let queue = OperationQueue()
motionManager.startAccelerometerUpdates(to: queue, withHandler:
{data, error in
guard let data = data else{
return
}
print("X = \(data.acceleration.x)")
print("Y = \(data.acceleration.y)")
print("Z = \(data.acceleration.z)")
}
)
} else {
print("Accelerometer is not available")
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
3
solved How to detect if iPhone is in motion? [closed]