[ SWIFT ] - Core Motion - 重力感應 或稱 加速感應

Core Motion 介紹
Core Motion主要提供:加速器、陀螺儀和磁力儀得設備資料,用以表示設備的重力方向、加速器資料、磁場資料,藉由XYZ三軸(pitch、roll、yaw)來表示旋轉的狀況。





※以下的偵測單位都是米(meter)
※CMMotionManager技術文件請參考https://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMMotionManager_Class/
(1)偵測高度:
使用CMAltimeter 類別 中
startRelativeAltitudeUpdatesToQueue方法:開始偵測高度
stopRelativeAltitudeUpdates方法:結束偵測高度
例如:A點開始偵測高度到B點偵測結束,當B點 > A點時回傳正值,當B點
(2)計步器:
提供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值得幾種情況:

範例程式:
va window UIWindow?
laz va manage CMMotionManager()
laz va queu NSOperationQueue()

fun application(application UIApplication, didFinishLaunchingWithOption launchOptions:
[NSObjec AnyObject]? - Boo {


i manager.gyroAvailable{

i manager.gyroActive  = false{

manager.gyroUpdateInterval  1. 40.0

manager.startGyroUpdatesToQueue(queue,
withHandler {(data CMGyroData! error NSError! in

println("Gyr Rotatio \(data.rotationRate.x)") println("Gyr Rotatio \(data.rotationRate.y)") println("Gyr Rotatio \(data.rotationRate.z)")

})

els {
println("Gyr i alread active")
}

els {
println("Gyr isn' available")
}
retur true
}



留言

張貼留言

您好:
歡迎到訪我的Blog,這裡有我的生活經驗、美好的回憶和程式開發經驗分享~
目前努力學習Swift中,希望你會喜歡Swift!
如果可以也請你留言給我一個鼓勵喔!
謝謝

熱門文章