IOS 计步器

这篇博客介绍的是当前比较流行的“计步器”-只是简单的知识点

计步器的实现在IOS8开始进行了改变。

但是我会对之前之后的都进行简单介绍。

IOS 8 -

//
//  ViewController.m
//  CX 计步器
//
//  Created by ma c on 16/4/12.
//  Copyright ? 2016年 bjsxt. All rights reserved.
//

#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>

@interface ViewController ()

@property (nonatomic, strong) CMStepCounter * counter;

@end

@implementation ViewController

#pragma mark - <懒加载>
- (CMStepCounter *)counter{
    if (!_counter) {
        _counter = [[CMStepCounter alloc]init];
    }
    return _counter;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    //判断计步器是否可用
    if (![CMStepCounter isStepCountingAvailable]) {
        NSLog(@"计步器不可用");
        return;
    }
    //开始计步
    //startStepCountingUpdatesToQueue 选择在哪个线程里进行
    //updateOn 对应的是每隔几秒后回调下面的block
    [self.counter startStepCountingUpdatesToQueue:[NSOperationQueue mainQueue] updateOn:2 withHandler:^(NSInteger numberOfSteps, NSDate * _Nonnull timestamp, NSError * _Nullable error) {

        if (error) {
            return ;
        }

        NSLog(@"可以在这里进行一些操作");

    }];
}

@end

IOS 8 +

//
//  ViewController.m
//  CX 计步器
//
//  Created by ma c on 16/4/12.
//  Copyright ? 2016年 bjsxt. All rights reserved.
//

#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>

@interface ViewController ()

@property (nonatomic, strong) CMPedometer * meter;

@end

@implementation ViewController

#pragma mark - <懒加载>
- (CMPedometer *)meter{
    if (!_meter) {
        _meter = [[CMPedometer alloc]init];
    }
    return _meter;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    //判断计步器是否可用
    if (![CMPedometer isStepCountingAvailable]) {
        NSLog(@"计步器不可用");
        return;
    }
    //开始计步
    //在一段时间内的部步数与距离
    [self.meter queryPedometerDataFromDate:[NSDate date] toDate:[NSDate dateWithTimeIntervalSinceNow:60*60] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
        if (error)
        {
            NSLog(@"error===%@",error);
        }
        else {
            NSLog(@"步数===%@",pedometerData.numberOfSteps);
            NSLog(@"距离===%@",pedometerData.distance);
        }
    }];
}

@end

时间: 2024-11-08 21:10:01

IOS 计步器的相关文章

ios 计步器的简单实现

随着人们生活水平的提高,加上移动技术的快速发展,越来越多的软件进军健康行业,计步器是用来记录个人运动的一项很好的技术.这段时间出于对这一技术的好奇,了解学习了一下计步器的实现过程. 计步器的实现有两种方式,(1),直接调用HealthKit框架获取苹果的健康应用数据.(2)速度传感器运动传感器\加速度传感器\加速器(Motion/Accelerometer Sensor) (1)HealthKit这种方式简单粗暴,但是也有相应的弊端,这个框架获取到的数据好像是1小时一更新,如果你的软件是想要获取

iOS开篇——UI之UIStepper (计步器)

UIStepper * stepper = [[UIStepper alloc]initWithFrame:CGRectMake(50, 100, 150, 40)]; //********最小值和最大值 stepper.maximumValue = 100; stepper.minimumValue = 0; //设置跃迁值 *** stepper.stepValue = 0.1; //设置镂空颜色 stepper.tintColor = [UIColor redColor]; //添加点击事

IOS总结(学习过程中整理的笔记)

MVC模式:(model+view+controller):是一种帮你把代码功能和显示划分出来的设计模式: model:较为底层的数据引擎,负责管理实体中所继承的数据: view:和用户交互界面: controller:连接二者的桥梁: cocoa frameworks 有两个框架: foundation foundation  是cocoa中最基本的一些类:再mac应用程序中负责对象管理,内存管理,容器等相关数据: uikit: uikit:为程序提供可视化的底层构架,包括窗口,视图,控件类和

第六十四篇、OC_计步器

计步器的实现方式主要有那么两种 1.通过直接调用系统的健康数据,基于HealthKit框架的,但是貌似是一小时更新一次数据.如果要实时获取步数,这种方式并不是最佳. 2.基于CoreMotion框架,顾名思义就是加速计/加速度传感器 >最早出现在iOS设备上的传感器之一 >加速计用于检测设备在X.Y.Z轴上的加速度 (哪个方向有力的作用) >加速计可以用于检测设备的摇晃,经典应用场景(例如摇一摇.计步器等) 源码: #import <Foundation/Foundation.h&

ios UI控件的简单整理

把该文件复制到.m文件里就能够方便的查找 /** 匿名类目:可以声明方法和变量,属性为private(不允许在外部调用,且不能被继承 */ /** 发送数据的委托方,接收数据的时代理发(即代理的反向传值) 委托方第一步:声明协议 委托方第二步:声明代理指针 委托方第三步:操作完成,告诉代理(即调用代理的方法) 代理第一步:遵守协议 代理第二步:成为代理 代理第三步:实现协议方法 */ // %zd %zi 表示NSInteger // %g 表示数字去掉尾零 //代码块路径 /Users/ms/

IOS开发语言Swift入门连载---属性

IOS开发语言Swift入门连载-属性 属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性可以用于类.结构体和枚举里,存储属性只能用于类和结构体. 存储属性和计算属性通常用于特定类型的实例,但是,属性也可以直接用于类型本身,这种属性称为类型属性. 另外,还可以定义属性监视器来监控属性值的变化,以此来触发一个自定义的操作.属性监视器可以添加到自己写的存储属性上,也可以添加到从父类继承的属性上. 存储属性 简单来说,一个存储属性就是

iOS开发之传感器

传感器 什么是传感器 传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上 传感器的作用 用于感应\检测设备周边的信息 不同类型的传感器, 检测的信息也不一样 iPhone中的下面现象都是由传感器完成的 在地图应用中, 能判断出手机头面向的方向 一关灯, iPhone会自动降低亮度让屏幕显得不是那么刺眼 打电话时, 人脸贴近iPhone屏幕时, 屏幕会自动锁屏, 达到省电的目的 ... ... 传感器的类型 iPhone5中内置的传感器有 运动传感器\加速度传感器\加速计(Motion/A

iOS 1 到 iOS 10 ,我都快老了

iOS 1:iPhone诞生 虽然很难想像,但初代iPhone在问世时在功能方面其实远远落后于那时的竞争对手,比如Windows Mobile.Palm OS.塞班.甚至是黑莓.它不支持3G.多任务.第三方应用,无法复制粘贴文本.在邮件中随意添加文件,也不支持MMS.Exchange推送邮件.主屏幕个性化.语音拨号. 但是,苹果在这款设备身上注重的是核心体验.速度.还有应用的连贯性.其中有3个方面对移动产业产生了革命性的影响. 核心iOS用户界面.在iOS之前,智能手机要么没有触控屏,或者使用的

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术