前提・実現したいこと
やりたいことは、ある一定の動き(Applewatchをつけた腕を3回シェイク)をした際に
メソッド(motionOK())を実行したいと思っています。
参考サイトをもとにシェイクを取得する実装をしました。
ですが実装した内容で実行したところ、少しでもApplewatchを動かしただけでメソッドが実行されてしまいます。
そうではなくで3回シェイクしたら実行したいのです。
どのような実装方法がありますでしょうか?
調べてもいまいち出てこなくて困っております。
参考サイトでも何でも良いですので、どなたかアドバイスをお願いいたします。
該当のソースコード
import CoreMotion class InterfaceController: WKInterfaceController{ var x = 0 var y = 0 var z = 0 override func awake(withContext context: Any?) { super.awake(withContext: context) motionManager.accelerometerUpdateInterval = 0.2 self.motionManager.startAccelerometerUpdates(to: OperationQueue()) { (data, error) in DispatchQueue.main.async { self.updateAccelerationData(data: (data?.acceleration)!) } } } func updateAccelerationData(data: CMAcceleration) { let isShaken = self.x != Int(data.x) || self.y != Int(data.y) || self.z != Int(data.z) if isShaken { print("!!!シェイクされました!!!!") motionOK() } self.x = Int(data.x) self.y = Int(data.y) self.z = Int(data.z) print("(self.x):(self.y):(self.z)") } func motionOK(){ print("実行するよ") } }
補足情報(FW/ツールのバージョンなど)
Xcode 10.1
Swift 4.2.1
WatchOS 4.3.2(Series1)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/28 05:20