美文网首页
有关ios健康记步的算法

有关ios健康记步的算法

作者: march_1991 | 来源:发表于2016-08-05 15:59 被阅读151次

    //.首先ios7以上的系统 有运动协处理器的设备 用户必须是允许读取健身数据的前提下
    if ([CMStepCounter isStepCountingAvailable]) {
    NSCalendar *calendar = [NSCalendar currentCalendar];

        NSDate *now = [NSDate date];
        _dateNow = now ;
        NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:now];
        
        NSDate *startDate = [calendar dateFromComponents:components];
        
        NSDate *endDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:1 toDate:startDate options:0];
        [self.stepCounter queryStepCountStartingFrom:startDate to:endDate toQueue:self.operationQueue withHandler:^(NSInteger numberOfSteps, NSError * _Nullable error) {
            NSString *text = [NSString stringWithFormat:@"步數: %ld", (long)numberOfSteps];
            //weakSelf.bu.text = (long)numberOfSteps ;
            weakSelf.bu.text =   [NSString stringWithFormat:@"%ld", (long)numberOfSteps];
            weakSelf.bushu = [NSString stringWithFormat:@"%ld", (long)numberOfSteps];
            //  [self showHint:[NSString stringWithFormat:@"%ld", (long)numberOfSteps]];
            //weakSelf.stepsLabel.text = text;
        }];
        self.stepCounter = [[CMStepCounter alloc] init];
               [self.stepCounter startStepCountingUpdatesToQueue:self.operationQueue
                                                 updateOn:20
                                              withHandler:
         ^(NSInteger numberOfSteps, NSDate *timestamp, NSError *error) {
             
             dispatch_async(dispatch_get_main_queue(), ^{
                 
                 if (error) {
                     UIAlertView *error = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请允许资源家访问运动与健康" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                     [error show];
                 }
                 else {
                     [self.stepCounter queryStepCountStartingFrom:startDate to:endDate toQueue:self.operationQueue withHandler:^(NSInteger numberOfSteps, NSError * _Nullable error) {
                         NSString *text = [NSString stringWithFormat:@"步數: %ld", (long)numberOfSteps];
                         //weakSelf.bu.text = (long)numberOfSteps ;
                        weakSelf.bu.text =   [NSString stringWithFormat:@"%ld", (long)numberOfSteps];
                        weakSelf.bushu = [NSString stringWithFormat:@"%ld", (long)numberOfSteps];
                       //  [self showHint:[NSString stringWithFormat:@"%ld", (long)numberOfSteps]];
                         //weakSelf.stepsLabel.text = text;
                     }];
    

    //
    // NSString *text = [NSString stringWithFormat:@"步數: %ld", weakSelf.numBu +(long)numberOfSteps];
    // NSDate *nowDa = [NSDate date];
    // NSString *text1 = [NSString stringWithFormat:@"%ld", weakSelf.numBu +(long)numberOfSteps];
    // self.bu.text = text1 ;
    // self.bushu = text1 ;
    // [self showHint:text];

                 }
             });
         }];
    }
    
    //開波
    if ([CMMotionActivityManager isActivityAvailable]) {
        
        self.activityManager = [[CMMotionActivityManager alloc] init];
        
        [self.activityManager startActivityUpdatesToQueue:self.operationQueue
                                              withHandler:
         ^(CMMotionActivity *activity) {
             
             dispatch_async(dispatch_get_main_queue(), ^{
                 
             });
         }];
    }
    //5S  以下的设备 需要自己太高算法去计算   
    

    NSString * st =[[NSUserDefaults standardUserDefaults]objectForKey:@"bushu"];
    stepCount = st.intValue ;
    __weak FirstViewController *weakSelf = self;
    [SOMotionDetector sharedInstance].motionTypeChangedBlock = ^(SOMotionType motionType) {
    NSString *type = @"";
    switch (motionType) {
    case MotionTypeNotMoving:
    type = @"Not moving";
    break;
    case MotionTypeWalking:
    type = @"Walking";
    break;
    case MotionTypeRunning:
    type = @"Running";
    break;
    case MotionTypeAutomotive:
    type = @"Automotive";
    break;
    }

    };
    
    [SOMotionDetector sharedInstance].locationChangedBlock = ^(CLLocation *location) {
    
    };
    
    [SOMotionDetector sharedInstance].accelerationChangedBlock = ^(CMAcceleration acceleration) {
    
    };
    
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
        [SOMotionDetector sharedInstance].useM7IfAvailable = YES; //Use M7 chip if available, otherwise use lib's algorithm
    }
    
    [[SOMotionDetector sharedInstance] startDetection];
    [[SOStepDetector sharedInstance] startDetectionWithUpdateBlock:^(NSError *error) {
        if (error) {
            NSLog(@"%@", error.localizedDescription);
            return;
        }
        NSDate *nowD = [NSDate date];
    
            stepCount++;
    

    }

    相关文章

      网友评论

          本文标题: 有关ios健康记步的算法

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