• 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
  • 相关阅读:
    2015第21周日
    2015第21周六
    从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)
    earlysuspend调用过程
    程序猿生存定律--使人生永动的势能
    调用ShellExecute所须要头文件
    Vbox创建COM对象失败
    HDU 1874 畅通公程续 (最短路 水)
    Java凝视Override、Deprecated、SuppressWarnings具体解释
    NAT的全然分析及其UDP穿透的全然解决方式
  • 原文地址:https://www.cnblogs.com/xubaoaichiyu/p/5383399.html
Copyright © 2020-2023  润新知