引見
CMPedometer:可以拜訪用戶運動(可以拜訪計步數據) 實用IOS8以上的體系 IOS可看最上面解釋
Healthkit :是IOS體系中的安康運用 須要運用受權來拜訪安康數據(好比計步)
這兩個有甚麼差別呢?
其實 Healthkit 也是 應用 CMPedometer 讀取用戶的步數和走的裡程,固然盤算的辦法是在手機外部盤算的, 它是應用 iphone5s 以上的m處置器來獲得數據盤算了,所以5s以下的裝備是不支撐 CMPedometer 手機計步的,固然有年夜牛可以應用重力傳感器和加快度傳感器一樣可以寫出本身的計步器軟件,我是個菜鳥只能應用體系的拉
Healthkit計步有個缺陷, 計步禁絕,有人會問了:這個 Healthkit 和我上面的 demo 不都是用 CMPedometer 來獲得計步數的,為何 Healthkit 禁絕呢?
答: 那是由於Healthkit記載的時區成績, ios獲得時光的時區按中國的時區少了8個小時, 舉個例子, 假如我要記載 5月5日的數據應當是 xxxx-05-05 00:00:00 至xxxx-05-05 23:59:59 這個區間的步數情形, 而 Healthkit 記載的時區倒是 xxxx-05-04 16:00:00 至 xxxx-05-05 15:59:59 ,所以Healthkit記載的信息是禁絕的, 假如如果本身開辟計步軟件呢,我們就要本身寫把, 不要獲得 Healthkit 的信息啦
以下demo是用 swift說話寫的
界說個全局變量 假如不是全局變量會報錯 let pedonmeter:CMPedometer = CMPedometer() 在辦法外面寫, 兩種辦法用哪一個都可以,不明確的處所可以看文檔 //斷定該裝備能否支撐計步功效 if CMPedometer.isStepCountingAvailable(){ //開端時光 let startTime = getStartTime() //停止時光 let endTime = getEndTime() //第一種 //獲得一個時光規模內的數據最年夜7天 參數 開端時光,停止時光, 一個閉包 pedonmeter.queryPedometerDataFromDate(startTime, toDate:endTime, withHandler: { (pedometerData:CMPedometerData?, error:NSError?) -> Void in if error != nil{ print("error:\(error)") } else{ print("開端時光:\(startTime)") print("停止時光:\(endTime)") print("步數===\(pedometerData!.numberOfSteps)") print("間隔===\(pedometerData!.distance)") } }) } //第二種 //獲得指定開端時光到以後時光的數據 參數 開端時光, 一個閉包 pedonmeter.startPedometerUpdatesFromDate(startTime, withHandler: { (pedometerData:CMPedometerData?, error:NSError?) -> Void in if error != nil{ print("error:\(error)") } else{ print("開端時光:\(startTime)") print("停止時光:\(endTime)") print("步數===\(pedometerData!.numberOfSteps)") print("間隔===\(pedometerData!.distance)") } })
上面是獲得時光的辦法,我是獲得當天的,你們也能夠本身改
/** 獲得以後時區的時光 */ func getEndTime() -> NSDate { //轉換本錢地時區 let date = NSDate() let zone = NSTimeZone.systemTimeZone() let interval = zone.secondsFromGMTForDate(date) let nowDate = date.dateByAddingTimeInterval(Double(interval)) return nowDate } /** 獲得開端時光 當天0時0分0秒 */ func getStartTime() -> NSDate { let datef = NSDateFormatter() datef.dateFormat = "yyyy-MM-dd" let stringdate = datef.stringFromDate(getEndTime()) print("當天日期:\(stringdate)") let tdate = datef.dateFromString(stringdate) //獲得當地時區確當天0時0分0秒 let zone = NSTimeZone.systemTimeZone() let interval = zone.secondsFromGMTForDate(tdate!) let nowday = tdate!.dateByAddingTimeInterval(Double(interval)) return nowday }
履行成果:
我當天走了 3107步 間隔 2千米多
留意:假如你像支撐ios7的話那不就可以應用CMPedometer,CMPedometer 的前身是 CMStepCounter
總結
以上就是iOS完成計步器功效的全體內容,願望本文的內容對年夜家進修開辟IOS能有所贊助,假如有疑問迎接年夜家留言。
【IOS計步器功效完成之Healthkit和CMPedometer】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!