Core Motion

25 篇文章 0 订阅

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)"
//      }
//  })
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值