Получить данные акселерометра и гироскопа от Apple Watch (а не от iPhone)?

Увидев этот вопрос, я попытался написать быструю программу, которая бы сохраняла часы данные акселерометра и гироскопа в файл.

@implementation InterfaceController{
    NSMutableArray *accData;
    bool recording;
}
- (void)awakeWithContext:(id)context {
    [super awakeWithContext:context];
    // Configure interface objects here.
    self.motionManager = [[CMMotionManager alloc] init];
    [self.motionManager setAccelerometerUpdateInterval:.01];
}

- (IBAction)startStopRecording {
    if (!recording){//We are starting to record.
        recording = YES;
        accData = [[NSMutableArray alloc] init];
        [self.startRecording setTitle:@"Stop Recording"];
        [self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
            [accData addObject:[NSString stringWithFormat:@"%f, %f, %f", accelerometerData.acceleration.x, accelerometerData.acceleration.y, accelerometerData.acceleration.z]];
        }];
    }else{
        recording = NO;//we are stopping the recording
        [self.motionManager stopAccelerometerUpdates];
        [self.startRecording setTitle:@"Start Recording"];
        [InterfaceController openParentApplication:@{ @"accData": accData } reply:^(NSDictionary *replyInfo, NSError *error) { //this method saves the array to a csv file.
            NSLog(@"Data has been saved.");
        }];
    }
}

Я нарисовал эти данные, и сколько бы я ни тряс часы, все мои графики выглядели так:

введите здесь описание изображения

До тех пор, пока спустя 8 часов я не начал подозревать, что собираю данные об ускорении не с часов, а с телефона (сидящего на столе рядом со мной). Я провел несколько тестов и подтвердил, что это именно то, что происходит.

Что приводит меня к первоначальному вопросу. Как получить ускорение/гироскоп/данные с часов, а не с iPhone?


person Chase Roberts    schedule 09.09.2015    source источник


Ответы (2)


Проблема была в том, что я не запускал watchOS2. Я предполагал, что я был, но он все еще находится в бета-версии, и я его не устанавливал. Данные, которые я получал, были данными акселерометра с телефона. Кроме того, в настоящее время вы можете получать данные синхронизации только с часами, используя watchOS2, а не данные гироскопа.

person Chase Roberts    schedule 14.09.2015

вы можете использовать платформу CoreMotion для получения данных об активности. в то время как я могу получить только данные об ускорении, гироскоп часто возвращает ложь.

person Cassie Xia    schedule 01.04.2016