前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS开发——步数获取

iOS开发——步数获取

作者头像
Originalee
发布2018-08-30 10:46:21
1.7K0
发布2018-08-30 10:46:21
举报
文章被收录于专栏:编程之旅编程之旅

最近半个月的开发工作,重点一直是类似于悦跑圈、咕咚这样的运动产品的功能,所以在处理iOS设备在运动中的表现也是积累了一些经验。

打算之后的文章,开始把整体的运动功能,分成简单的模块,来介绍一下。那么今天我们就来围绕iOS设备的计步功能,稍微简单的聊一聊。

大家可能都看过或者知晓HealthKit这个框架,但是实际上,一般去研究过这个框架的,都会知道,实时的获取运动数据,并不是用这个框架的,尤其是步数,这个框架如果你在健康中没有开启步数权限的话,是获取不到的。

所以讲到了实时获取运动数据,苹果还提供了另一个框架给我们使用 —— CoreMotion框架。在这个框架中,我们可以获取加速度、步数等等等等运动数据,今天我们主要是讲讲步数是怎么获取的。

首先我们要去引用这个框架 import CoreMotion

然后生成两个时间,分别为查询步数的起止时间,CoreMotion中会保存七天的运动数据,假设我们生成的时间为startTime,endTime.

分别对这两个时间进行初始化

class StepCounter: NSObject {
    
    private var startTime: NSDate?
    private var endTime: NSDate!
    
   //在这里我只是随意初始化, 你可以根据自己具体的时间周期去设置时间
   startTime = NSDate()
   endTime = NSDate()

CoreMotion框架中,专门有一个类是负责处理步数的,就是CMPedometer,所以在这里我们想获取到步数信息,也要创建一个这个对象,并且同时创建一个int对象保存步数数据

private var pedometer: CMPedometer!
lazy private var numberOfSteps = 0

接下来 我们来看看具体获取步数的代码。

    private func getPedonmeterData(){
        pedometer = CMPedometer()
        if CMPedometer.isStepCountingAvailable(){
            if startTime != nil{
                pedometer.queryPedometerDataFromDate(startTime!, toDate: endTime, withHandler: { (data, error) in
                    if error != nil{
                        print("\(error?.localizedDescription)")
                    }else{
                        if data != nil{
                            dispatch_async(dispatch_get_main_queue(), {
                                self.numberOfSteps = Int(data!.numberOfSteps)
                            })
                        }
                    }
                })
            }
        }
    }

代码是否简单易懂,先判断该设备是否支持计步功能,若是时间不为空,那么调用public func queryPedometerDataFromDate(start: NSDate, toDate end: NSDate, withHandler handler: CMPedometerHandler)函数去查询步数数据,传入的参数有起止时间,之后的操作在闭包中完成,分别判断是否有错误信息以及返回的数据时,就可以轻易的获取到步数。

今天的分享就到这里了,代码非常简短易懂,就不往GitHub上丢了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.12.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档