Upload
kanako-kobayashi
View
412
Download
0
Embed Size (px)
Citation preview
• WordPressもくもく倶楽部@Co-Edoもやってます。
• Ruby / Ruby on Rails ビギナーズ倶楽部@Co-Edoやってます( ́ ▽ ` )ノ
• スマホアプリ開発初心者な、アプリケーションエンジニア(Rails / LAMP / Java / Oracle)
Self-Intoroduction
http://ror-beginners.doorkeeper.jp/
http://wp-moku.doorkeeper.jp/
1) シェイクをカウントしてみよう!
Today's Agenda
2)モーションイベントを学ぼう!
3)モーションイベントの実装方法!
1-1) シェイクをカウントしてみよう!
Let’s DEMO!
2-1)モーションイベントを学ぼう!
モーションイベントとは!デバイスを振ったり、傾けたりすることで、 モーションイベントが発生します。
デバイスのハードウェア
加速度センサー ジャイロスコープ
イベントを検知してくれるのは
CoreMotionフレームワーク
2-2)モーションイベントを学ぼう!
https://developer.apple.com/jp/documentation/EventHandlingiPhoneOS.pdf引用資料:イベント処理ガイド(iOS用)
加速度センサー・x、y、z軸に沿った速度の変化を測定します。 ・加速度データを受け取って処理するためには、 CMMotionManagerクラスを利用します。
・startAccelerometerUpdates(プル型) ーアプリケーションは定期的にこの値を取得します。・startAccelerometerUpdatesToQueue:withHandler(プッシュ型) ー加速度センサーのデータ更新に応じて実行されます。
いずれかのメソッドを利用。
2-3)モーションイベントを学ぼう!
ジャイロスコープ・3つの空間軸の周りの回転速度を測定します。 ・ジャイロスコープが搭載されているデバイス。
https://developer.apple.com/jp/documentation/EventHandlingiPhoneOS.pdf引用資料:イベント処理ガイド(iOS用)
・startGyroUpdates(プル型) ーアプリケーションは定期的にこの値を取得します。・startGyroUpdatesToQueue:withHandler(プッシュ型) ージャイロスコープのデータ更新に応じて実行されます。
ー iPhone 4以降/iPod touch第4世代/iPad 2以降
いずれかのメソッドを利用。
2-4)モーションイベントを学ぼう!
データにアクセスする方法1)デバイスの大まかな向きが分かればよく、 向きベクトルは必要ないという場合=> UIDeviceを使ってデバイスの向きを取得します。
2)デバイスを振る動きに応答したい場合=> UIEventオブジェクトから必要な情報を取得します。
3)UIDeviceやUIEventを使って 必要な情報が得られない場合
=> Core Motionフレームワークを利用して、加速度センサー、 ジャイロスコープ、デバイスモーションの各クラスにアクセスします。
3-1)モーションイベントの実装方法!
モーション処理メソッドは、3種類あります。
・motionBegan:withEvent ・motionEnded:withEvent ・motionCancelled:withEvent
motionBegan、motionEndedのいずれか、 あるいは両方を実装する必要があります。 motionCancelledメソッドも実装して、iOSが モーションイベントをキャンセルした場合に、 対処できるようにしましょう。
@IBOutlet weak var countLabel: UILabel! var cnt = 0 override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent) { if event.type == UIEventType.Motion && event.subtype == UIEventSubtype.MotionShake { // シェイク動作始まり時の処理 // 今回は特に処理を入れていません。 } } override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) { if event.type == UIEventType.Motion && event.subtype == UIEventSubtype.MotionShake { // シェイク動作終了時の処理 cnt++ countLabel.text = cnt.description } } override func motionCancelled(motion: UIEventSubtype, withEvent event: UIEvent) { // モーションイベントをキャンセルしたとき対処 // イベントがキャンセルされるのは、シェイクモーションが割り込まれたとき、 // あるいは(シェイクがあまりに長く続くなどのため)モーションが有効でないとiOSが判断したときです。 countLabel.text = "NG" }
3-2)モーションイベントの実装方法!DEMOアプリのコード
3-3)モーションイベントの実装方法!シュミレータでの 確認方法!
iOS Simulator > Hardware > Shake Gesture
Or
control + command + z
ま と め
モーションイベントデータにアクセスする方法
1)デバイスの大まかな向きを取得する場合は、 UIDeviceを利用する。
2)シェイク時には、UIEventを利用する。
3)UIDeviceやUIEventを使って必要な情報が得られない 場合は、Core Motionフレームワークを利用する。
わからないー! だれか教えてー♪
Swiftビギナーズ倶楽部は
わからないことは周りの人に聞いて、気軽に教え合って、 皆の疑問を1つでも解決して、楽しんで開発していきましょう。
Let's study together!
Thank you :)