swift計(jì)步器CMPedometer的使用方法
最近公司接了個(gè)項(xiàng)目,是一款運(yùn)動(dòng)類型的APP,可以檢測(cè)運(yùn)動(dòng)量(例如:步數(shù),上下樓等)、睡眠信息、速度等信息,因?yàn)橐郧按致缘牧私膺^(guò)傳感器方面的相關(guān)信息,知道主要是蘋果設(shè)備內(nèi)置的傳感器在起作用,傳感器的種類也很多,有興趣的可以去查看蘋果官方文檔或者查閱大神們的博客都可以找到!但是一直也沒(méi)有自己寫一下,做個(gè)測(cè)試:
話不多說(shuō),代碼如下:
1、準(zhǔn)備
// 計(jì)步器 var myTextView = UITextView() var pedometer = CMPedometer() var myBtn = UIButton()
2、在plist文件中添加相關(guān)權(quán)限描述:
Privacy - Motion Usage Description :String 計(jì)步器需要獲取您的運(yùn)動(dòng)信息
3、具體代碼如下:
myBtn.frame = CGRect(x:10,y:360,width:kScreenWidth-20,height:50)
myBtn.setTitle("按鈕", for: .normal)
myBtn.setTitle("倒計(jì)時(shí)中", for: .disabled)
myBtn.backgroundColor = UIColor.orange
myBtn.setTitleColor(UIColor.white, for: .normal)
myBtn.setTitleColor(UIColor.blue, for: .disabled)
myBtn.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
self.view.addSubview(myBtn)
func btnClick(){
self.startPedometerUpdates()
}
// ---------------------------------計(jì)步器--------------------------------------------
func creatPedometer(){
myTextView.frame = CGRect(x:20,y:100,width:kScreenWidth-20,height:200)
self.view.addSubview(myTextView)
// 創(chuàng)建觸發(fā)按鈕
myBtn.frame = CGRect(x:10,y:360,width:kScreenWidth-20,height:50)
myBtn.setTitle("按鈕", for: .normal)
// myBtn.setTitle("倒計(jì)時(shí)中", for: .disabled)
myBtn.backgroundColor = UIColor.orange
// myBtn.setTitleColor(UIColor.white, for: .normal)
// myBtn.setTitleColor(UIColor.blue, for: .disabled)
myBtn.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
self.view.addSubview(myBtn)
}
// 開(kāi)始獲取步數(shù)統(tǒng)計(jì)數(shù)據(jù)
func startPedometerUpdates(){
// 判斷設(shè)備支持情況
guard CMPedometer.isStepCountingAvailable() else {
self.myTextView.text = "\n當(dāng)前設(shè)備不支持獲取步數(shù)\n"
return
}
// 獲取今天凌晨時(shí)間
let cal = Calendar.current
var comps = cal.dateComponents([.year,.month,.day], from: Date())
comps.hour = 0
comps.minute = 0
comps.second = 0
let midnightOfToday = cal.date(from: comps)
//初始化并開(kāi)始實(shí)時(shí)獲取數(shù)據(jù)
self.pedometer.startUpdates (from: midnightOfToday!, withHandler: { pedometerData, error in
//錯(cuò)誤處理
guard error == nil else {
print(error!)
return
}
//獲取各個(gè)數(shù)據(jù)
var text = "---今日運(yùn)動(dòng)數(shù)據(jù)---\n"
if let numberOfSteps = pedometerData?.numberOfSteps {
text += "步數(shù): \(numberOfSteps)\n"
}
if let distance = pedometerData?.distance {
text += "距離: \(distance)\n"
}
if let floorsAscended = pedometerData?.floorsAscended {
text += "上樓: \(floorsAscended)\n"
}
if let floorsDescended = pedometerData?.floorsDescended {
text += "下樓: \(floorsDescended)\n"
}
if #available(iOS 9.0, *) {
if let currentPace = pedometerData?.currentPace {
text += "速度: \(currentPace)m/s\n"
}
} else {
// Fallback on earlier versions
}
if #available(iOS 9.0, *) {
if let currentCadence = pedometerData?.currentCadence {
text += "速度: \(currentCadence)步/秒\n"
}
} else {
// Fallback on earlier versions
}
// 在線程中更新文本框數(shù)據(jù)
DispatchQueue.main.async {
self.myTextView.text = text
}
})
然后,測(cè)試了下,親自去爬了3層樓梯,如下圖:

基本的實(shí)現(xiàn)就完成了!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Swift代碼實(shí)現(xiàn)冒泡排序算法的簡(jiǎn)單實(shí)例
冒牌排序可謂最基本的排序算法之一,穩(wěn)定而沒(méi)有優(yōu)化空間:D 下面就一起來(lái)看一下Swift代碼實(shí)現(xiàn)冒泡排序算法的簡(jiǎn)單實(shí)例:2016-06-06
Compose聲明式代碼語(yǔ)法對(duì)比React?Flutter?SwiftUI
這篇文章主要為大家介紹了Compose聲明式代碼語(yǔ)法對(duì)比React?Flutter?SwiftUI來(lái)解釋為什么說(shuō)?Compose?的聲明式代碼最簡(jiǎn)潔,有需要的朋友可以借鑒參考下2022-08-08
swift實(shí)現(xiàn)簡(jiǎn)易計(jì)算器項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)簡(jiǎn)易計(jì)算器項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Swift4使用GCD實(shí)現(xiàn)計(jì)時(shí)器
這篇文章主要為大家詳細(xì)介紹了Swift4使用GCD實(shí)現(xiàn)計(jì)時(shí)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
Swift中內(nèi)置的集合類型學(xué)習(xí)筆記
Swift中自帶數(shù)組、set、字典三大集合類型,這里將學(xué)習(xí)過(guò)程中的基礎(chǔ)的Swift中內(nèi)置的集合類型學(xué)習(xí)筆記進(jìn)行整理,需要的朋友可以參考下2016-06-06
Swift語(yǔ)言中的函數(shù)學(xué)習(xí)教程
這篇文章主要介紹了Swift語(yǔ)言中的函數(shù)學(xué)習(xí)教程,著重講了Swift函數(shù)的參數(shù)傳遞用法,需要的朋友可以參考下2015-11-11
iOS UITableView展開(kāi)縮放動(dòng)畫實(shí)例代碼
這篇文章主要介紹了Swift UITableView展開(kāi)縮放動(dòng)畫實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08

