swift计步器CMPedometer的使用方法

 更新时间:2017年09月29日 11:31:35   作者:稻草人11223  
这篇文章主要为大家详细介绍了swift计步器CMPedometer的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近公司接了个项目,是一款运动类型的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/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
      }
      
//        在线程中更新文本框数据
      DispatchQueue.main.async {
        
        self.myTextView.text = text
      }
      
  })

然后,测试了下,亲自去爬了3层楼梯,如下图:

基本的实现就完成了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Swift代码实现冒泡排序算法的简单实例

    Swift代码实现冒泡排序算法的简单实例

    冒牌排序可谓最基本的排序算法之一,稳定而没有优化空间:D 下面就一起来看一下Swift代码实现冒泡排序算法的简单实例:
    2016-06-06
  • RxSwift使用技巧之过滤操作详解

    RxSwift使用技巧之过滤操作详解

    RxSwift的目的是让让数据/事件流和异步任务能够更方便的序列化处理,能够使用Swift进行响应式编程,下面这篇文章主要给大家介绍了关于RxSwift使用技巧之过滤操作的相关资料,需要的朋友可以参考下。
    2017-09-09
  • Compose声明式代码语法对比React Flutter SwiftUI

    Compose声明式代码语法对比React Flutter SwiftUI

    这篇文章主要为大家介绍了Compose声明式代码语法对比React Flutter SwiftUI来解释为什么说 Compose 的声明式代码最简洁,有需要的朋友可以借鉴参考下
    2022-08-08
  • swift实现简易计算器项目

    swift实现简易计算器项目

    这篇文章主要为大家详细介绍了swift实现简易计算器项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Swift4使用GCD实现计时器

    Swift4使用GCD实现计时器

    这篇文章主要为大家详细介绍了Swift4使用GCD实现计时器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Swift中内置的集合类型学习笔记

    Swift中内置的集合类型学习笔记

    Swift中自带数组、set、字典三大集合类型,这里将学习过程中的基础的Swift中内置的集合类型学习笔记进行整理,需要的朋友可以参考下
    2016-06-06
  • Swift教程之控制流详解

    Swift教程之控制流详解

    这篇文章主要介绍了Swift教程之控制流详解,本文详细讲解了Swift中的for循环、for-in循环、For-Condition-Increment条件循环、while循环、Do-while循环、if条件语句等控制流语句,需要的朋友可以参考下
    2015-01-01
  • Swift语言中的函数学习教程

    Swift语言中的函数学习教程

    这篇文章主要介绍了Swift语言中的函数学习教程,着重讲了Swift函数的参数传递用法,需要的朋友可以参考下
    2015-11-11
  • 升级到Swift 4.0可能遇到的坑总结

    升级到Swift 4.0可能遇到的坑总结

    这篇文章主要给大家介绍了关于升级到Swift 4.0可能遇到的坑的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用swift4具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • iOS UITableView展开缩放动画实例代码

    iOS UITableView展开缩放动画实例代码

    这篇文章主要介绍了Swift UITableView展开缩放动画实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论