在Swift类示例中是否有任何Google Cardboard Magnetic传感器触发器?

时间:2015-12-17 11:06:58

标签: swift virtual-reality

没有找到如何使用Swift在线触发磁传感器的任何示例,所以我在这里发布了一个示例,因为我自己创建了一个。

这是在iPhone 6上测试的。

1 个答案:

答案 0 :(得分:0)

这是我写的一个简单的触发器类。它看起来运作得很好。监听磁铁数据。

用法:

let magnetListener = VRMagnetSensor()
magnetListener.callback = { type in
    // will print MAGNETIC SENSOR REPORTED onPress
    print("MAGNETIC SENSOR REPORTED \(type)")
}

班级 - VRMagnetSensor.swift

import Foundation
import CoreMotion

public class VRMagnetSensor  {

    let manager = CMMotionManager()
    var previousMagnetData = ( x:0.0, y:0.0, z:0.0 )
    var callback:((type:String) ->())?

    init() {

        if manager.magnetometerAvailable && !manager.magnetometerActive {

            let sensorInterval = NSTimeInterval(0.5)
            manager.magnetometerUpdateInterval = sensorInterval
            manager.startMagnetometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: {
                (data, error) in

                let field = data!.magneticField

                print("MAGNETIC DATA x \(field.x)   y \(field.y)   z \(field.z)")

                if(field.x < self.previousMagnetData.x-30 && self.previousMagnetData.x != -0.0) {
                    dispatch_async(dispatch_get_main_queue()) {
                        self.callback!(type:"onPress")
                    }
                }
                self.previousMagnetData = ( x:field.x, y:field.y, z:field.z )
            })
        }
    }
}