iOS中计步器功能的使用

作者: ZhengYaWei | 来源:发表于2017-01-15 17:12 被阅读111次

传感器是一种监测装置,能高手到被监测到的信息,并能将高手到的信息,按照一定的规律转换电信号。

iPhone中常见的传感器:
***环境光传感器:监测周围环境亮度。如屏幕根据环境自动调节亮度、拍照时是否打开闪光灯。
***距离传感器:监测是否所有物品靠近手机屏幕。如打电话时手机贴到耳朵边,屏幕变暗;微信中听语音的时候,靠近耳边声音会自动变小。
***磁力计传感器:从磁场获取方向信息。如导航方向,指南针。
***内部温度传感器:监测设备内部温度。
***湿度传感器:简单说,温度传感器类似化学中的试纸,一遇到水就会变红。通常apple售后在检测设备时,首先会取出手机内的“试纸”,判断设备是否进水,如果进水就不在保修范围之内。
***陀螺仪:检测设备在X、Y、Z轴旋转的角速度。主要是应用在游戏中和一些VR场景中。
***加速计:检测设备在X、Y、Z轴旋转的加速度。应用场景有微信的摇一摇和运动类型app中的计步器。

以前计步器实现思路,根据定位计算两个地点的距离,然后根据距离除以人行走的每一步的大概距离,但是这种做法计算不是很准确,iOS7开始苹果推出新的API,可以实现计步器。同样是在CoreMotion框架中,主要使用CMStepCounter这个类。所以第一件事实导入#import <CoreMotion/CoreMotion.h>这个头文件.代码如下。有一点要格外强调,@property (strong, nonatomic) CMPedometer *pedonmeter;这个要设置成属性,主要是为了保证其生命周期。如果没有创建成属性,计步器的功能将无法使用。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.label.text = @"计步器";
    self.label.frame = CGRectMake(50, 200, 300, 40);
    
    //这个API只支持iOS8及以后
    // 1.判断计步器是否可用
    if (![CMPedometer isStepCountingAvailable]) {
        NSLog(@"计步器不可用");
        return;
    }
    // 2.创建计步器对象
     CMPedometer *pedometer= [[CMPedometer alloc] init];
    self.pedonmeter = pedometer;
    // 3.开始计步  [NSDate date]表示从现在开始计步
    [self.pedonmeter startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData *pedometerData, NSError *error) {
        if (error) {
            return;
        }
        //行走步数
        NSLog(@"steps = %@", pedometerData.numberOfSteps);
        //行走距离
        NSLog(@"distance = %@",pedometerData.distance);
        //这里是子线程,要回到主线程更新UI
        dispatch_async(dispatch_get_main_queue(), ^{
             self.label.text = [NSString stringWithFormat:@"%@sss",pedometerData.numberOfSteps];
        });
    }];
    //4.查询前两天走了多少步(做多查询七天)
    NSDateFormatter *fmt = [[NSDateFormatter alloc]init];
    fmt.dateFormat = @"yyyy-MM-dd";
    //这里的步数是01-07的晚上12点,到01-09的晚上的12点,总共的步数。实际就是01-08,01-09这两天总共的步数
    NSDate *formDate = [fmt dateFromString:@"2017-01-08"];
    NSDate *toDate = [fmt dateFromString:@"2017-01-10"];
    [self.pedonmeter queryPedometerDataFromDate:formDate toDate:toDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"%@",pedometerData.numberOfSteps);
        }
    }]; 
}

相关文章

  • iOS中计步器功能的使用

    传感器是一种监测装置,能高手到被监测到的信息,并能将高手到的信息,按照一定的规律转换电信号。 iPhone中常见的...

  • 探索iOS计步器功能

    我的一个朋友是从事外出销售工作,老板不但要看他每天的业绩,也会去关注他每天在某个APP的行走步数。你应该知道的,业...

  • iOS 实现计步器功能

    现在越来越多的人关注运动和健康,iOS系统也在很早的时候就自带了健康APP,下面详细描述一下在我们开发中,怎么实现...

  • iOS Healthkit和CMPedometer区别

    转IOS 计步器功能 Healthkit和CMPedometer文/贪吃鱼(简书作者)原文链接:http://ww...

  • IOS 计步器功能 Healthkit和CMPedometer

    这几天在弄计步功能, 找了好久看了几篇零散的文章, 我自己做了总结, 我忘了我看文章的地址了, 没法附上转载连接了...

  • swift5计步器的使用

    swift5计步器的使用 5之前有个过期的计步器对象,今天我们使用最新的对象CMPedometer

  • 同时使用百度asr和tts sdk时,无法唤醒

    App中同时使用了ASR iOS SDK和离线在线语音合成 iOS SDK,主要使用的功能:语音唤醒、语义识别、语...

  • iOS中@功能的完整实现

    iOS中@功能的完整实现 iOS中@功能的完整实现

  • iOS13新增"家长控制",其实ColorOS早有此项

    今天,苹果官方推送了iOS 13.3,在该版本中,iOS新增了屏幕时间中的「家长控制」功能。该功能的实际使用场景,...

  • iOS计步器实现

    前几天写一个关于养生和医疗的一个项目,要写一个类似微信运动的计步器功能,只好先去研究一下计步器功能实现。 之前在我...

网友评论

    本文标题:iOS中计步器功能的使用

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