まとーか鈴木

千の姿と千の技と千の風

CoreMotionのいくつかのクラスを酔った勢いで訳す

CoreMotionの使ってみたいクラスを適当に訳した。

英語よくわからんので、ニュアンスが掴めればおk。

 

5SとかiPad Airとか買ったら使ってみたい。

 

直近では継続して記事を書くのが目標なので、汚くてもアップしちゃいます。

後で整形するかも。

 

 

----ここから

 

CoreMotion.frameworkはハードウェアからモーションデータを受け取って処理出来るようにします。

フレームワークは生データとセンサで加工された値をBlocksベースのIFで使用することをサポートします。

ジャイロを搭載しているデバイスでは、生データと、高度や回転を考慮した値も取得できます。

これらを組み合わせてユーザー体験を向上できます。

 

  • CMAccelerometerData Class

3軸の加速度を表すインスタンス

CMMotionManagerクラスで定義されているstartAccelerometerUpdatesToQueue:withHandler:メソッドの最後のパラメータの

accelerometerDataプロパティでアクセスします。

スーパークラスのCMAccelerometerData,CMlogItemは値を取得したタイムスタンプを記録します。

 

  • CMAttitude Class

デバイスの向き?

 

  •  CMDeviceMotion Class

CMDeviceMotionインスタンスはattitude,回転率,加速度を含みます。

アプリケーションはCMMotionManagerクラスで定義される以下のメソッド、

startDeviceMotionUpdatesUsingReferenceFrame:toQueue:withHandler:,

startDeviceMotionUpdatesToQueue:withHandler:

startDeviceMotionUpdatesUsingReferenceFrame:

startDeviceMotionUpdatesメソッドを読んだ後に、CMDeviceMotionオブジェクトを受け取ります。

 

CMDeviceMotionクラスは重力とユーザー加速度の両方を計測します。

 

  • CMGyroData Class

CMGyroDataクラスはデバイスの回転のみを計測するクラスです。

CMMotionManagerクラスで定義される以下のメソッド、

startGyroUpdatesToQueue:withHandler:

startGyroUpdatesの定期呼び出し後に受け取れます。

 

  •  CMLogItem Class

モーションイベントのタイムスタンプを記録します。

 

  •  CMMagnetometerData Class

地磁気センサーの値をもつクラスです。

CMMotionManagerのメソッドを呼び出しによって取得できます。

 

  •  CMMotionActivity Class (iOS7)

CMMotionActivityは1つのモーションの更新データを持つクラスです。

モーションをサポートする端末では、現在のモーションのタイプの変化を知るために、CMMotionActivityManagerオブジェクトを使うことが出来ます。

更新が発生したとき、更新の情報はCMMotionActivityオブジェクトに梱包されてアプリに送られます。

 

このクラスのモーション関連のプロパティは are not mutually exclusive.お互いに排他的ではありません。?

言い換えると、1つ以上のモーション関連プロパティを含むことが可能ということです。

例えば、赤信号でユーザーが車を停めたとき、そのとき発生するモーションイベントはautomotiveとstationaryプロパティをYESにします。

また、デバイスが動いていたとしても、徒歩、ランニング中、automotive travelに関連付けられない場合はすべてのプロパティがNOにセットされます。

 

本オブジェクトはCMMotionActivityManagerクラスが作成し、Blocksベースのメソッドで通知するので、自分で作成してはいけません。

 

取得出来る移動手段(Getting the Type of Motion)

全部BOOL

stationary 静止

walking 徒歩

runninng 走っている

automotive 車とかの中

unknown 謎のモーション 端末の電源が入ったばかりで、モーションタイプを判定するのに十分なモーションデータが集まっていないとき等にYESになります。

 

startDate モーションの変更が起きた時間

confidence モーションタイプの判定の自信

 

  • CMMotionActivityManager Class

CMMotionActiviryManagerクラスはデバイスによって保存されたモーションデータにアクセスするために提供されます。

一定サイクルでユーザーが歩いているか、走っているか、車に乗っているか、止まっているかを反映します。

ナビゲーションアプリは、モーションタイプの変更を見ることによって、それぞれの位相手段による異なる案内を提供出来ます。

このクラスを使うと、モーションタイプが変更されたときの通知の依頼、または、過去のモーション変更データを収集することが出来ます。

 

・メソッド

+ isAvtivityAvailable

現在のデバイスでモーションデータが利用できるかを返す

 

- startActivityUpdatesToQueue:withHandler:

モーションデータ更新の通知を開始する

更新があったときにhandlerブロックでモーションデータを受け取れます。

パフォーマンスの都合でsuspend中は通知しないけど、resume時に最後のモーションを通知します。

サスペンド中のすべてのモーションデータを取るにはquery〜を使って取得してね。

 

新しいブロックを渡して、再びこのメソッドを読んだ場合は、

古いブロックの呼び出しを停止して、新しいブロックで呼び出しを行います。

 

 

- stopActivityUpdates

モーションデータ更新の通知を停止する

 

- queryActiviryStartingFromData:toData:toQueue:withHandler:

指定した期間のモーションデータ履歴を収集出来ます。

非同期で実行され、すぐにhandlerで指定したブロックで返却されます。

システムは過去7日分のほとんどのアクティビティのデータを保存します。

もし指定した範囲にサンプルがなかった場合は、CMErrorUnknownがhandlerブロックに渡されます。

 

  • CMStepCounter Class

CMStepCounterクラスはユーザーとデバイスが一緒に歩いた歩数にアクセスすることを提供します。

歩数情報は適切なハードウェアによってデバイスで収集され、デベロッパは直近の物理的アクティビティの判定を行うことが出来ます。

このクラスで現在の歩数と、過去の歩数情報を取得することが出来ます。

 

・メソッド

+ isStepCountingAvailable

現在のデバイスでstep-counting機能が使えるか返します

 

- queryStepCountStartingFrom:toQueue:withHandler:

指定した期間の歩数データを収集します。

システムは過去7日間の歩数データを保持しています。

指定した範囲にサンプルがない場合、handlerブロックに歩数0として渡します。

 

----ここまで

 

ノリはわかった気がする。