天天看点

CoreMotion运动与健身之监听用户运动状态

#import <coremotion/coremotion.h>

// 运动与健身

- (void)motion

{

    if ([cmmotionactivitymanager isactivityavailable])

    {

        cmmotionactivitymanager *motionactivitymanager = [[cmmotionactivitymanager alloc]init];

        [motionactivitymanager startactivityupdatestoqueue:[nsoperationqueue mainqueue] withhandler:^(cmmotionactivity *activity) {

            nslog(@"confidence=%@  unknown=%@   walking=%@  stationary=%@  running=%@   cycling=%@  automotive=%@  startdate==%@", @(activity.confidence), @(activity.unknown), @(activity.walking), @(activity.stationary), @(activity.running), @(activity.cycling), @(activity.automotive), activity.startdate);

        }];

        nscalendar *calendar = [[nscalendar alloc] initwithcalendaridentifier:nscalendaridentifiergregorian];

        nsdatecomponents *datecom = [calendar components:nsyearcalendarunit | nsmonthcalendarunit | nsdaycalendarunit | nshourcalendarunit | nsminutecalendarunit | nssecondcalendarunit fromdate:[nsdate date]];

        nsdate *enddate = [calendar datefromcomponents:datecom];

        [datecom sethour:0];

        [datecom setminute:0];

        [datecom setsecond:0];

        nsdate *startdate = [calendar datefromcomponents:datecom];

        [motionactivitymanager queryactivitystartingfromdate:startdate todate:enddate toqueue:[nsoperationqueue mainqueue] withhandler:^(nsarray<cmmotionactivity *> * _nullable activities, nserror * _nullable error) {

            for (cmmotionactivity *activity in activities)

            {

                nslog(@"query confidence=%@  unknown=%@   walking=%@  stationary=%@  running=%@   cycling=%@  automotive=%@  startdate==%@", @(activity.confidence), @(activity.unknown), @(activity.walking), @(activity.stationary), @(activity.running), @(activity.cycling), @(activity.automotive), activity.startdate);

            }

        [motionactivitymanager stopactivityupdates];

    } else

        nslog(@"运动与健身 不可用");

    }

}