Core Motion

5342 단어 CoreMotionIOSOSXOSX
Core Motion 은 장치 의 센서 데 이 터 를 읽 기 위해 애플 이 제공 하 는 프레임 워 크 입 니 다.
가속 계 등
CMMotionManager 클래스 를 사용 하여 이 하드웨어 에서 전 송 된 데 이 터 를 관리 합 니 다.
var motionManager = CMMotionManager()
self.motionManager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) { (motion:CMDeviceMotion?, error:NSError?) -> Void in
    let xString = NSString(format: "%.1f", (motion?.userAcceleration.x)!)
    let yString = NSString(format: "%.1f", (motion?.userAcceleration.y)!)
    let zString = NSString(format: "%.1f", (motion?.userAcceleration.z)!)
    self.XLabel.text = xString as String
    self.YLabel.text = yString as String
    self.ZLabel.text = zString as String
    let pitchDegress = (motion?.attitude.pitch)! * 180 / M_PI
    let rollDegress = (motion?.attitude.roll)! * 180 / M_PI
    let yawDegress = (motion?.attitude.yaw)! * 180 / M_PI
    let pitchString = NSString(format: "%.1f", pitchDegress)
    let rollString = NSString(format: "%.1f", rollDegress)
    let yawString = NSString(format: "%.1f", yawDegress)
    self.pitchLabel.text = pitchString as String
    self.rollLabel.text = rollString as String
    self.yawLabel.text = yawString as String
}

고도계
let altimer = CMAltimeter()
if CMAltimeter.isRelativeAltitudeAvailable() {
    var currentAltitude: Float =  0.0
    altimer.startRelativeAltitudeUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { (data:CMAltitudeData?, error:NSError?) -> Void in
        currentAltitude += Float((data?.relativeAltitude)!)
        self.heightLabel.text = "\(currentAltitude)"
    })
}

만보 기
let pedometer = CMPedometer()
if CMPedometer.isStepCountingAvailable() {
    let calender = NSCalendar.currentCalendar()
    let now = NSDate()
    let weekAgo = calender.dateByAddingUnit(NSCalendarUnit.Day, value: -6, toDate: now, options: NSCalendarOptions())
    pedometer.queryPedometerDataFromDate(weekAgo!, toDate: now, withHandler: { (data:CMPedometerData?, error:NSError?) -> Void in
        NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
            if let stepData = data{
                self.weekLabel.text = "\(stepData.numberOfSteps)"
            }
        })
    })
//   API      
//  pedometer.startPedometerUpdatesFromDate(now, withHandler: { (data:CMPedometerData?, error:NSError?) -> Void in
//      if let stepData = data{
//          self.nowSteps.text = "\(stepData.numberOfSteps)"
//      }
//  })
}

좋은 웹페이지 즐겨찾기