Core Motion
Accessing Barometer to get relative altitude
Swift
Import the Core Motion library:
import CoreMotionNext, we need to create a CMAltimeter object, but a common pitfall is to create it in the viewDidLoad(). If done that way, the altimeter won’t be accessible when we need to call a method on it. Nevertheless, go ahead and create your CMAltimeter object just before the viewDidLoad():
let altimeter = CMAltimeter()Now:
-
We need to check if
relativeAltitudeis even available with the following method:CMAltimeter.isRelativeAltitudeAvailable. -
If that returns
true, you can then begin monitoring altitude change withstartRelativeAltitudeUpdatesToQueue -
If there are no errors, you should be able to retrieve data from the
relativeAltitudeand pressure properties.
Given below is the definition of a button action to begin monitoring with our barometer.
@IBAction func start(sender: AnyObject){
if CMAltimeter.isRelativeAltitudeAvailable() {
// 2
altimeter.startRelativeAltitudeUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { data, error in
// 3
if (error == nil) {
println("Relative Altitude: \(data.relativeAltitude)")
println("Pressure: \(data.pressure)")
}
})
}