如何实现CMStepCounter CoreMotion - M7芯片



我想知道是否有人可以向我展示一个如何实现CMStepCounter的示例。(我已经查看了文档,但仍然对如何实现感到困惑)。

我希望每次执行步骤时都更新视图上的 UILabel。我还希望让该应用程序在关闭时继续计算步数。

我对iOS相对较新,任何帮助将不胜感激:)!

谢谢莱恩

你应该按如下方式实现它

#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *stepsCountingLabel;  // Connect this outlet to your's label in xib file.
@property (nonatomic, strong) CMStepCounter *cmStepCounter;
@property (nonatomic, strong) NSOperationQueue *operationQueue;
@end
@implementation ViewController
- (NSOperationQueue *)operationQueue
{
    if (_operationQueue == nil)
    {
        _operationQueue = [NSOperationQueue new];
    }
    return _operationQueue;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    if ([CMStepCounter isStepCountingAvailable])
    {
        self.cmStepCounter = [[CMStepCounter alloc] init];
        [self.cmStepCounter startStepCountingUpdatesToQueue:self.operationQueue updateOn:1 withHandler:^(NSInteger numberOfSteps, NSDate *timestamp, NSError *error) 
         {
            [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                [self updateStepCounterLabelWithStepCounter:numberOfSteps];
            }];
        }];
    }
}
- (void)updateStepCounterLabelWithStepCounter:(NSInteger)countedSteps 
{
    self.stepsCountingLabel.text = [NSString stringWithFormat:@"%ld", (long)countedSteps];
}
@end

但请注意,有时 startStepCountingUpdatesToQueue 的块会延迟更新 numberOfSteps。

相关内容

  • 没有找到相关文章

最新更新