iOS 计步器开发

在微信运动、QQ健康等泛滥的年代,我们公司也终于要搞一个计步器,特此记录。

对于使用了M7或者M8处理器的设备(iPhone5s、iPhone6、iPhone6 Plus、iPhone6s、iPhone6s Plus、),Core Motion框架支持了一些预置的motion动作,比如步数、爬楼还有移动类型(行走、骑行等等)。

所以计步器的开发其实很简单,我们只需要用Core Motion框架就可以直接从设备读取监测了。当然我们还可以用HealthKit进行开发,在这里我们不进行详细的介绍。

Core Motion中的CMStepCounter和CMPedometer是我们今天的重点。

CMPedometer


在iOS8及其以上系统中我们可以使用CMPedometer类获取行走相关信息(步数、距离、上楼、下楼、当前速度等)。

当前设备是否可以获取步数
+ (BOOL)isStepCountingAvailable;
当前设备是否可以获取距离
+ (BOOL)isDistanceAvailable;
当前设备是否可以获取上下楼层数
+ (BOOL)isFloorCountingAvailable;
当前设备是否可以获取速度(s/m)
+ (BOOL)isPaceAvailable
当前设备是否可以获取节奏
+ (BOOL)isCadenceAvailable
根据开始和结束时间查询行走相关信息
- (void)queryPedometerDataFromDate:(NSDate *)start
toDate:(NSDate *)end
withHandler:(CMPedometerHandler)handler;
从某一时刻开始监测步数变化
- (void)startPedometerUpdatesFromDate:(NSDate *)start
withHandler:(CMPedometerHandler)handler;
停止监测步数变化
- (void)stopPedometerUpdates;

CMStepCounter


在iOS7中我们只能使用CMStepCounter类获取步数,并且仅能够获取步数。

判断步数统计是否有效
+ (BOOL)isStepCountingAvailable;

根据开始和结束时间查询步数
- (void)queryStepCountStartingFrom:(NSDate *)start
to:(NSDate *)end
toQueue:(NSOperationQueue *)queue
withHandler:(CMStepQueryHandler)handler;

开始断监测步数变化
- (void)startStepCountingUpdatesToQueue:(NSOperationQueue *)queue
updateOn:(NSInteger)stepCounts
withHandler:(CMStepUpdateHandler)handler;

停止监测步数变化
- (void)stopStepCountingUpdates;

总结


综上我们可以看出CMPedometer类可以获取的运动信息更加详细。而CMStepCounter类仅能够获取步数。我们在使用中需要判断系统版本使用不同的类获取行走信息。

我对CMPedometer 和CMStepCounter做了简单封装,使得你只需要一行代码就可以获取及监测行走信息。 代码奉上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容