swiftのcoremotionを使い簡単なダイエットアプリを作ろうと思っています
歩数、歩いた距離は取得できましたが、歩行時間の取得の仕方がわかりません
どなたかわかる方いれば教えていただきたいです。
参考にしているサイト
https://qiita.com/daisukeokaoss/items/ba9d16d102ef23ad6e62
import UIKit import CoreMotion class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } let pedometer:CMPedometer = CMPedometer()//プロパティでCMPedometerをインスタンス化。 //ここは、クラスのプロパティで宣言すること。getWalkのローカル変数で記述してしまって、コールバックが呼ばれるときにインスタンスが消えててエラーが発生してしばらく詰まりました。 @IBAction func getWalk(_ sender: Any) { if(!CMPedometer.isStepCountingAvailable()) { //歩数が取得できるかどうかチェックしてます print("cannot get stepcount") } let from = Date(timeInterval: TimeInterval(-60*60*24*0), since: now) var component = NSCalendar.current.dateComponents([.year, .month, .day], from: from) component.hour = 0 component.minute = 0 component.second = 0 let start:NSDate = NSCalendar.current.date(from:component)! as NSDate //XX月XX日23時59分59秒に設定したものをendにいれる component.hour = 23 component.minute = 59 component.second = 59 let end:NSDate = NSCalendar.current.date(from:component)! as NSDate pedometer.queryPedometerData(from: start, to: end, withHandler: {(pedometerData, error) in print("歩数は(pedometerData!.numberOfSteps)") print("距離は(String(describing: pedometerData?.distance))") // 距離 print("登った回数(String(describing: pedometerData?.floorsAscended))") // 上った回数 print("降った回数(String(describing: pedometerData?.floorsDescended))") }) } }
pedometerDataのstartDataからendDataの間ではないのでしょうか?
pedometerDataのstartDataからendDataは測定時間が取得できます
startData:2019-09-23 15:00:00 +0000
endData:2019-09-24 14:59:59 +0000
上記にDate型の値が書いてあると思うので、
それを用いるとして、
googleで「日付の比較 swift」で探せば、
間の時間を計算する方法が出てくると思います。
比較する時間をcoremotionでどのように取得したらいいのか分からないです。。
上記の頂いた回答ですと下記で取得できるイメージでしたが、歩行時間ではなく計測時間が取得できます。
pedometerData.endDate.timeIntervalSinceDate(pedometerData.startDate)
止まっている時間を除きたいということですか???
なら、速度を取得し、速度が0出ない時カウントする必要がありますね。
回答1件
あなたの回答
tips
プレビュー