WWDC2016-Health and Fitness with Core Motion

Health and Fitness with Core Motion

session 713

这次主要包含一下3个方面的内容:

  • Historical Accelerometer
  • Pedometer events
  • Device Motion on apple watch

在Core Motion 运动处理API自从iOS4开始就已经存在了。这部分相关的API介绍呢?请参照WWDC2011,WWDC2012的相关内容。

一、Historical Accelerometer

在WWDC2015时,我们更新一个API,名称是CM Sensor Recoder API。

  • iOS方面

    • 这个api主要作用就是持续不断的获取你的设备的加速度信息。并且它是低能耗的。
    • CM Sensor Recoder 主要是和传感器直接交互,便于直接检索和处理运动数据。
    • 即使是当你的应用处于不活跃状态时,recoder 仍可以继续处理运动数据。
    • 当你的应用需要使用运动数据是,可以直接通过recoder 进行获取。
  • WatchOS方面

    • 优化力度也是显而易见的,如图
Snip20160731_7.png

分别在待机时间上面,处理数据的延迟度上面都有着提高。

  • 在iOS10以及watchOS3中,你在使用senorrecoder时,就不仅仅长期观察用户运动,可以写分到类别,例如监测用的体育活动,记录用户的健身运动情况,更可以辅助医学的健康诊断。
  • 当你带着apple watch 的时候,手臂。手腕的晃动。都可以试试的被监测到。通过用户的活动,可以准确的分析用户的运动行为,从而给出更加专业性的建议。

二、Pedometer events

  • 在说这个Pedometer event之前,我们还是要先了解下CMPedometer。
  • CMPedometer是非常丰富的API。 可以记录步数,距离,楼层等。通过它创建一个全天性的监测活动。你也可以为这些活动设置一些有趣的目标让用户去实现。
  • 现在CMPedometer,在用户锻炼方面也有出色的表现。
Snip20160731_8.png
Snip20160731_9.png
  • 例如:现在提供了运动速度指标(走路或者跑步)。不管GPS是否管用,都可以准确的记录用户的步数和运动距离。pedometer events (ios10 新增API)就是实现这个的关键。
Snip20160731_12.png
  • 这用用这个api设计一些健康运动的APP。


    Snip20160731_13.png
  • 我们来讨论下典型的运动锻炼类app。通常你会遇到一个问题那就是,在记录用户运动情况的时候,用户在过马路时出现等红绿灯情况。此时你如何计算定义用户开始与停止走路的状态。

  • pedometer event 可以做到 智能预测停止和继续;计算准确的距离和速度;GPS不适用的情况

  • 实现原理:API为了保持数据的精确性,更加低能耗。通过分析用户运动数据的预测算法实现。我们需要指出的是这个预测算法会持续监测用户运动情况。会准确地告知你 是否暂停或者继续的事件。

  • 通过预测算法和实时更新监测状态,来保证数据的准确性

下图是Pedometer event 的使用设备范围

iphon6/6+都不支持

Snip20160731_15.png

部分代码展示

@interface ViewController ()
@property (nonatomic, assign) CGFloat  relaticeAltitudeNow;
@property (nonatomic, assign) CGFloat  relaticeAltitudeAtResume;
@property (nonatomic, strong) CMPedometer  * eventManager;
@property (nonatomic, strong) CMAltimeter  * elevationManager;

@property (nonatomic, strong) NSOperationQueue  * queue;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    self.eventManager = [[CMPedometer alloc]init];
    
    self.elevationManager = [[CMAltimeter alloc]init];
    
    self.relaticeAltitudeNow = 0.0;
    self.relaticeAltitudeAtResume = 0.0;
    
    self.queue = [NSOperationQueue currentQueue];
    

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)startMyTrail {
    if ([CMPedometer isPedometerEventTrackingAvailable]) {
        [self.elevationManager startRelativeAltitudeUpdatesToQueue:self.queue withHandler:^(CMAltitudeData * _Nullable altitudeData, NSError * _Nullable error) {
            self.relaticeAltitudeNow = [altitudeData.relativeAltitude doubleValue];
        }];
    }
    
    if ([CMPedometer isPedometerEventTrackingAvailable]) {
        [self.eventManager startPedometerEventUpdatesWithHandler:^(CMPedometerEvent * _Nullable pedometerEvent, NSError * _Nullable error) {
            
            if (pedometerEvent.type == CMPedometerEventTypeResume) {
                self.relaticeAltitudeAtResume = self.relaticeAltitudeNow;
                
            }else if (pedometerEvent.type == CMPedometerEventTypePause) {
                if (self.relaticeAltitudeNow - self.relaticeAltitudeAtResume > 0.0 ) {
                    
                }else if (self.relaticeAltitudeNow - self.relaticeAltitudeAtResume <0.0) {
                }
            }
        
        }];
    }
}

- (void)stopTrail {
    [self.eventManager stopPedometerEventUpdates];
    [self.elevationManager stopRelativeAltitudeUpdates];
}

三、Device Motion on apple watch

Snip20160731_24.png
  • 自从ios5 就出现了device motion,所有iOS系统都是支持的,现在watchOS3 中我们也将这部分移植了。
  • 在watchOS3中关于Device Motion 的主要有四个API
    • Attitude
      用户处置摆动手臂
Snip20160731_25.png
  • Graity 重力感应
Snip20160731_26.png
  • Rotation rate 旋转角度
Snip20160731_28.png
  • User Acceleration 用户水平运动
Snip20160731_29.png

他们的使用场景 :

Snip20160731_27.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,585评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,283评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,760评论 0 324
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,461评论 1 266
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,280评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,268评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,656评论 3 385
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,322评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,629评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,691评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,445评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,299评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,694评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,982评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,244评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,642评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,829评论 2 335

推荐阅读更多精彩内容