美文网首页
iOS HealthKit获取步数

iOS HealthKit获取步数

作者: 程序媛Miss_S | 来源:发表于2017-05-24 14:04 被阅读0次

    作为一个天天喊着减肥的资深女程序媛儿胖纸,对于减肥的APP还是十分关注的,尤其是运动步数排行榜,其实也只是看到步数排名的那一小小会儿时间会不开森罢了,嘿嘿。恰逢开发需要,于是乎,,,下定决心研究一下这个步数的计步原理。现在iOS开发中获取步数一般两种方式,一种是利用重力感应通过一系列复杂的计算方式计算得到,另一种就是走捷径直接获取iPhone健康里的计步数据了。先写一个走捷径的吧,记录一下走过的坑儿。具体的原理神马的需要的时候再问度娘吧。

    第一步:工程中引入HealthKit.framework,在需要实现的地方#import <HealthKit/HealthKit.h>.

    第二步:检查设备是否支持HealthKit.(现在基本上都支持的,但是保险起见还是加上吧).

    检查设备是否支持.jpg

    第三步:授权,即APP跳转到“访问健康数据”界面,把步数一行的开关打开,否则不能正常获取数据.

    授权.jpg

    第四步:读取一天天的步数.

    一天为单位的步数.jpg

    其中,步数是读取了手机健康里的所有数据,since1970.  

    HKStatistics *lastStatics = [result.statistics lastObject] 获取了今天的到目前为止的步数。

    result.statistics 是返回的每一天的所有的数据的数组集合,需要的话可以利用 for (HKStatistics *statistic in result.statistics) 取出每一天的数据


    然而我们的APP中要获得的不仅仅是当前你今天走了多少步,还需要得到午饭后(12:00-14:00)和晚饭后(18:00-20:00)的步数,这就需要获取步数的时间单位是小时而不是天了。

    只取今天的数据.jpg 以2小时为一个时间单位的数据.jpg

    for (HKStatistics *statistic in result.statistics)打印出来数据的形式是这样的:2017-05-24 00:00:00 +0000 - 2017-05-24 02:00:00 +0000. 所以我取了数据的第11位和第12位,即 时 的位置. 判断时的位置是否是12,是的话取出来的就是12:00-14:00的步数了。

    另外,它默认的是零时区的时间,所以我们还得转成成北京时间,转换方法如下:

    转成当地时间.jpg

    OK,it's  all. 如有错误还请看到的亲给予指导。

    相关文章

      网友评论

          本文标题:iOS HealthKit获取步数

          本文链接:https://www.haomeiwen.com/subject/ajvgyttx.html