Xcode7 Swift2.0
全局创建cmm
var cmm:CMMotionManager!
let q = NSOperationQueue()
创建实例
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
cmm=CMMotionManager()//创建实例
}
加速度传感器方法
func startAccelerometerUpdate(){
//===============加速度===============
cmm.accelerometerUpdateInterval = 1 //加速度获取数据频率,这里1秒一次
if cmm.accelerometerAvailable && !cmm.accelerometerAvailable{//判断是否可用,如在模拟器上就不行
cmm.startAccelerometerUpdatesToQueue(q) {
(data: CMAccelerometerData?, error: NSError?) in
guard data != nil else {
print("There was an error: \(error)")
return
}
// print(data!.acceleration.x)
print("AccelerometerData:\(data!)")
//使用传感器获取加速的数据
//或者
// cmm.startAccelerometerUpdatesToQueue(q, withHandler: {
// (data: CMAccelerometerData?, error: NSError?) in
// })
}
}else{
print("加速器不可用")
}
}
陀螺仪传感器方法
func startGyroUpdate(){
//===================陀螺仪========
cmm.gyroUpdateInterval = 1 //获取陀螺仪数据时间
if cmm.gyroAvailable && !cmm.gyroAvailable{
// cmm.startGyroUpdatesToQueue(q){
//
// (data:CMGyroData?,err:NSError?) in
//
// }//或下面方法
cmm.startGyroUpdatesToQueue(q, withHandler: {
(data:CMGyroData?,err:NSError?) in
print("GyroData:\(data!)")
})
}
}
距离传感器
func startListenProximity(){
//===============距离传感器=====
//是否侦听传感器
UIDevice.currentDevice().proximityMonitoringEnabled = true
//开始侦听,添加侦听器
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("proximityChanged"), name: UIDeviceProximityStateDidChangeNotification, object: nil)
}
func proximityChanged(){
// print(">>>>>")
print("\(UIDevice.currentDevice().proximityState)")
}
电源传感器
func startListenLevel(){
//============侦听电源传感器===
UIDevice.currentDevice().batteryMonitoringEnabled = true
//输出电量百分比
print("\(UIDevice.currentDevice().batteryLevel)")
//电量改变就会执行levelChanged方法再次输出电量
NSNotificationCenter.defaultCenter().addObserver(self, selector: "levelChanged", name: UIDeviceBatteryLevelDidChangeNotification, object: nil)
}
func levelChanged(){
//如果手机电量有变化的话就会执行这个方法
print("\(UIDevice.currentDevice().batteryLevel)")
}
各个传感器的停止方法
func stopAccelerometerUpdates(){
//停止加速度活动
if cmm.accelerometerActive{ //是否处在活动中
cmm.stopAccelerometerUpdates() //停止
}
}
func stopGyroUpdate(){
//停止陀螺仪活动
if cmm.gyroActive{ //是否处在活动中
cmm.stopGyroUpdates() //停止
}
}
func stopListenProximity(){
//去除侦听器
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIDeviceProximityStateDidChangeNotification, object: nil)
}
func stopListenLevel(){
//停止侦听电源传感器
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIDeviceBatteryLevelDidChangeNotification, object: nil)
}
调用
override func viewWillAppear(animated: Bool) {
startAccelerometerUpdate()//加速度传感器
startGyroUpdate()//陀螺仪传感器
startListenProximity()//距离传感器
startListenLevel()//电源传感器
}
override func viewWillDisappear(animated: Bool) {
stopAccelerometerUpdates()
stopGyroUpdate()
stopListenProximity()
stopListenLevel()
}