[ SWIFT ] - Core Motion - 重力感應 或稱 加速感應
Core Motion 介紹
Core Motion主要提供:加速器、陀螺儀和磁力儀得設備資料,用以表示設備的重力方向、加速器資料、磁場資料,藉由XYZ三軸(pitch、roll、yaw)來表示旋轉的狀況。
Core Motion主要提供:加速器、陀螺儀和磁力儀得設備資料,用以表示設備的重力方向、加速器資料、磁場資料,藉由XYZ三軸(pitch、roll、yaw)來表示旋轉的狀況。
※以下的偵測單位都是米(meter)
※CMMotionManager技術文件請參考https://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMMotionManager_Class/
(1)偵測高度:
使用CMAltimeter 類別 中
startRelativeAltitudeUpdatesToQueue方法:開始偵測高度
stopRelativeAltitudeUpdates方法:結束偵測高度
(2)計步器:
提供A點到B點之間的步數、樓層高度與距離數據。
使用CMPedometer 類別中
(2.1)isStepCountingAvailable:是否可使用計步器
startPedometerUpdatesFromDate:withHandler:輸入日期查詢,可回傳步數、樓 層高度與距離。
stopPedometerUpdates:停止使用計步器。
(2.2)isFloorCountingAvailable:是否可偵測上下樓層True表示可以False表示不可以。
(2.3)queryPedometerDataFromDate:toDate:withHandler:偵測的時間點
提供A點到B點之間的步數、樓層高度與距離數據。
使用CMPedometer 類別中
(2.1)isStepCountingAvailable:是否可使用計步器
startPedometerUpdatesFromDate:withHandler:輸入日期查詢,可回傳步數、樓 層高度與距離。
stopPedometerUpdates:停止使用計步器。
(2.2)isFloorCountingAvailable:是否可偵測上下樓層True表示可以False表示不可以。
(2.3)queryPedometerDataFromDate:toDate:withHandler:偵測的時間點
(2.4)accelerometerAvailable:偵測重力感應是否可用。
(2.5)accelerometerActive:偵測目前重力感應使否啟用中。
(3)偵測目前裝置中陀螺儀是否可用與陀螺儀目前是否持續運作中
(3.1)gyroAvailable:偵測目前裝置中陀螺儀是否可用,true表示此裝置有陀螺儀
(3.2)gyroActive:陀螺儀是否持續運作中,true表示目前陀螺儀仍持續傳送資料給 APP。
(4) 取得重力感應資料:startAccelerometerUpdatesToQueue:withHandler: instance method of CMMotionManager
(5)偵測iOS裝置得搖晃或震動:motionEnded:withEvent: method of any object in your application that is of type UIResponder.
(6)取得陀螺儀得資料:
(6.1)檢查目前硬體設備是否有陀螺儀
(6.2)如果陀螺儀有效,檢查目前陀螺儀是否持續傳送資料
(6.3)設定更新頻率:使用gyroUpdateInterval 來更新陀螺儀資料,單位:秒,並設 定更新頻率,例如:1.0/20.0表示每秒更新20次
(6.4)startGyroUpdatesToQueue:withHandler: 持續更新陀螺儀資料。
(6.5)取得XYZ值得幾種情況:
範例程式:
(3)偵測目前裝置中陀螺儀是否可用與陀螺儀目前是否持續運作中
(3.1)gyroAvailable:偵測目前裝置中陀螺儀是否可用,true表示此裝置有陀螺儀
(3.2)gyroActive:陀螺儀是否持續運作中,true表示目前陀螺儀仍持續傳送資料給 APP。
(4) 取得重力感應資料:startAccelerometerUpdatesToQueue:withHandler: instance method of CMMotionManager
(5)偵測iOS裝置得搖晃或震動:motionEnded:withEvent: method of any object in your application that is of type UIResponder.
(6)取得陀螺儀得資料:
(6.1)檢查目前硬體設備是否有陀螺儀
(6.2)如果陀螺儀有效,檢查目前陀螺儀是否持續傳送資料
(6.3)設定更新頻率:使用gyroUpdateInterval 來更新陀螺儀資料,單位:秒,並設 定更新頻率,例如:1.0/20.0表示每秒更新20次
(6.4)startGyroUpdatesToQueue:withHandler: 持續更新陀螺儀資料。
(6.5)取得XYZ值得幾種情況:
範例程式:
var window: UIWindow?
lazy var manager = CMMotionManager()
lazy var queue = NSOperationQueue()
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[NSObject : AnyObject]?) -> Bool {
if manager.gyroAvailable{
if manager.gyroActive == false{
manager.gyroUpdateInterval = 1.0 / 40.0
manager.startGyroUpdatesToQueue(queue,
withHandler: {(data: CMGyroData!, error: NSError!) in
println("Gyro Rotation x = \(data.rotationRate.x)") println("Gyro Rotation y = \(data.rotationRate.y)") println("Gyro Rotation z = \(data.rotationRate.z)")
})
} else {
println("Gyro is already active")
}
} else {
println("Gyro isn't available")
}
return true
}
感謝~
回覆刪除感謝分享!
回覆刪除