概述
最近公司接了个项目,是一款运动类型的APP,可以检测运动量(例如:步数,上下楼等)、睡眠信息、速度等信息,因为以前粗略的了解过传感器方面的相关信息,知道主要是苹果设备内置的传感器在起作用,传感器的种类也很多,有兴趣的可以去查看苹果官方文档或者查阅大神们的博客都可以找到!但是一直也没有自己写一下,做个测试:
话不多说,代码如下:
1、准备
// 计步器 var myTextView = UITextView() var pedometer = CMPedometer() var myBtn = UIButton()
2、在plist文件中添加相关权限描述:
Privacy - Motion Usage Description :String 计步器需要获取您的运动信息
3、具体代码如下:
myBtn.frame = CGRect(x:10,y:360,width:kScreenWidth-20,height:50) myBtn.setTitle("按钮", for: .normal) myBtn.setTitle("倒计时中", 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() } // ---------------------------------计步器-------------------------------------------- func creatPedometer(){ myTextView.frame = CGRect(x:20,y:100,width:kScreenWidth-20,height:200) self.view.addSubview(myTextView) // 创建触发按钮 myBtn.frame = CGRect(x:10,y:360,width:kScreenWidth-20,height:50) myBtn.setTitle("按钮", for: .normal) // myBtn.setTitle("倒计时中", 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 startPedometerUpdates(){ // 判断设备支持情况 guard CMPedometer.isStepCountingAvailable() else { self.myTextView.text = "n当前设备不支持获取步数n" return } // 获取今天凌晨时间 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) //初始化并开始实时获取数据 self.pedometer.startUpdates (from: midnightOfToday!, withHandler: { pedometerData, error in //错误处理 guard error == nil else { print(error!) return } //获取各个数据 var text = "---今日运动数据---n" if let numberOfSteps = pedometerData?.numberOfSteps { text += "步数: (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/sn" } } else { // Fallback on earlier versions } if #available(iOS 9.0, *) { if let currentCadence = pedometerData?.currentCadence { text += "速度: (currentCadence)步/秒n" } } else { // Fallback on earlier versions } // 在线程中更新文本框数据 DispatchQueue.main.async { self.myTextView.text = text } })
然后,测试了下,亲自去爬了3层楼梯,如下图:
基本的实现就完成了!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持靠谱客。
最后
以上就是背后指甲油为你收集整理的swift计步器CMPedometer的使用方法的全部内容,希望文章能够帮你解决swift计步器CMPedometer的使用方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复