zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    IE各版本CSS Hack(兼容性处理)语法速查表
    如何使用Three.js加载obj和mtl文件
    C# windows服务制作(包括安装及卸载)
    初识 Sql Server存储过程
    初始Bootstrap
    微软语言包实现汉字转拼音
    Autocomplete 自动补全(Webform实战篇)
    Npoi导出Excel 实战篇(Webform)
    Linq 知识回顾
    常用正则用法汇总
  • 原文地址:https://www.cnblogs.com/xubaoaichiyu/p/5383399.html
Copyright © 2011-2022 走看看