标签: core-motion

苹果手表 CMDeviceMotion 没有给我很好的读数

目前,我只是记录一堆运动数据并将其保存到文件中。然而,当我绘制数据时,我很难相信我得到了正确的读数。这是我的手表代码:

- (IBAction)startStopRecording {
    if (!recording){
        NSLog(@"starting to record");
        recording = YES;
        data = [[NSMutableArray alloc] init];
        [self.startRecording setTitle:@"Stop Recording"];
        if (self.motionManager.deviceMotionAvailable) {
            [self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
                [data addObject:[NSString stringWithFormat:@"%f, %f, %f, %f, %f, %f, %f, %f, %f", motion.attitude.pitch, motion.attitude.roll, motion.attitude.yaw, motion.userAcceleration.x, motion.userAcceleration.y, motion.userAcceleration.z, motion.rotationRate.x, motion.rotationRate.y, motion.rotationRate.z]];
                NSLog(@".");
            }];
        }
    }else{
        recording = NO;
        NSLog(@"stopping recording");
        [self.motionManager stopDeviceMotionUpdates];
        [self.startRecording setTitle:@"Start Recording"];
        [InterfaceController openParentApplication:@{ @"data": data } reply:^(NSDictionary *replyInfo, NSError *error) {
            NSLog(@"Data has been saved.");
            NSLog(@"replyInfo …
Run Code Online (Sandbox Code Playgroud)

objective-c ios core-motion apple-watch watchkit

2
推荐指数
1
解决办法
719
查看次数

使用 CoreMotion 跟踪用户速度,无需 GPS

我想跟踪用户的位置并根据他的移动在离线地图中更新它,而无需使用 GPS 且必须依赖位置更新。

我已经尝试过CMMotionManager并获得acceleration了G。然而,这是加速度而不是速度。管理者还允许获得重力、旋转和态度。

有没有办法计算用户的速度m/s?如果是这样,我该怎么办?有公式/代码示例吗?

gps ios core-motion

2
推荐指数
1
解决办法
819
查看次数

CMAttitudeReferenceFrameXTrueNorthZVertical 不指向北

我正在使用此代码来定义设备位置。横滚和俯仰值看起来不错(当设备放在桌子上时,它们为 0),但当偏航为 0 时,罗盘指向西。怎么了?

        [self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:[NSOperationQueue currentQueue]
                                                   withHandler: ^(CMDeviceMotion *motion, NSError *error){
                                                       [self performSelectorOnMainThread:@selector(handleDeviceMotion:) withObject:motion waitUntilDone:YES];
                                                   }];
    }
}

- (void)handleDeviceMotion:(CMDeviceMotion*)motion {
   CMAttitude *attitude = motion.attitude;
   double yaw = attitude.yaw * 180 / M_PI;
   double pitch = attitude.pitch * 180 / M_PI;
   double roll = attitude.roll * 180 / M_PI;
   self.xLabel.text = [NSString stringWithFormat:@"%7.4f", yaw];
   self.yLabel.text = [NSString stringWithFormat:@"%7.4f", pitch];
   self.zLabel.text = [NSString stringWithFormat:@"%7.4f", roll];
   [self sendDeviceAttitudeLogWithYaw:yaw pitch:pitch roll:roll];
}
Run Code Online (Sandbox Code Playgroud)

objective-c core-motion

2
推荐指数
1
解决办法
259
查看次数

为什么我没有收到任何加速度计更新?

我正在尝试使用 CoreMotion 和 Swift 获取加速度计更新,这是我放置在 viewDidLoad 中的内容:

override func viewDidLoad() {
    super.viewDidLoad()
    let motionManager = CMMotionManager()
    motionManager.accelerometerUpdateInterval = 0.2
    motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()) {
        (info:CMAccelerometerData!,error:NSError!) in
        if error != nil {
            println(error)
        }
        else {
            println("OK")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,看起来我的闭包从未被调用(我控制台中没有任何内容),你知道为什么吗?

ios core-motion swift

1
推荐指数
1
解决办法
794
查看次数

确定用户是否允许访问我的iOS应用中的"运动和健身"权限

我正在XCode 7.0上构建一个iPhone应用程序(9.0.2).想知道最好的方法是确定用户是否从我的应用程序中访问了Motion和Fitness权限.

我主要使用CMMotionActivityManager类.有一个名为+ isActivityAvailable的属性,但即使Motion和Fitness权限设置为false,它也会返回true.

谢谢!

cocoa-touch ios core-motion

1
推荐指数
1
解决办法
2521
查看次数

如何从可变加速度计获得速度(简单的线性运动)?

我想根据加速度计随时计算当前的iphone运动速度,加速度计是可变的.谁能提出任何想法?

iphone accelerometer core-motion

0
推荐指数
1
解决办法
883
查看次数

CMMotionActivity详细介绍了汽车,以区分汽车和火车

CMMotionActivity当框架返回automotive类型时,我正在使用并试图区分汽车,火车和公共汽车。

这不仅可以使用来实现CoreMotion,所以我认为有必要使用第三方服务,例如云服务或第三方框架。

有谁遇到过同样的问题吗?谢谢

ios core-motion cmmotionmanager

0
推荐指数
1
解决办法
458
查看次数

快速检测后台运动活动

我想在应用程序暂停(而不是停止)时检测运动活动。我使用了这段代码,如果用户使用应用程序,它就可以工作:

let isActivityAvailable = CMMotionActivityManager.isActivityAvailable()
if isActivityAvailable {
    CMMotionActivityManager().startActivityUpdates(to: OperationQueue.main) { (motionActivity) in
        if (motionActivity!.confidence.rawValue > 0) {
            if (motionActivity?.walking)! {
                print("User is walking")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ios core-motion swift

0
推荐指数
1
解决办法
1632
查看次数