Tag: cmmotionmanager

iOS CMMotionActivity Manager,汽车停车时如何检测停车标志?

我正在开发一个用于检测用户当前动作的项目,并使用包含“固定”,“行走”,“汽车”,“跑步”等动作的CMMotionActivityManager。 现在有一个要求,我需要知道人们停放汽车的位置。 但事情是,我只需要最后停车的位置。 如何消除停车标志的影响。 因为人们开车时总是停下来。 如果汽车停止,那么状态将是'静止的,1,行走0,跑步0,汽车1,骑车0, 如果汽车处于汽车运动状态:“静止的,0,走的,0的,跑的,0,汽车的,1,骑车的,0” 如果汽车处于静止运动:“静止的,1,行走0,跑步0,汽车0,骑车0, 这是代码的一部分: if (activity.automotive && activity.stationary) { //stop signs status } if (activity.automotive && !activity.stationary) { //automotive } if (!activity.automotive && activity.stationary && activity.confidence == CMMotionActivityConfidenceHigh) { //stationary with a high confidence } 但是系统不能那么敏感,不能确定用户是停下来停车还是停车。 由于它不够灵敏,如果人们最终停下车,我不知道如何提高检测的准确性。

如何在iOS 8下调整CMMotionManager数据的方向?

我的应用程序使用CMMotionManager来跟踪设备运动,但是iOS始终以标准设备方向(底部的主页button)返回设备运动数据。 为了将运动数据转换为与我的UIView相同的方向,我从我的视图中累积了视图变换,如下所示: CGAffineTransform transform = self.view.transform; for (UIView *superview = self.view.superview; superview; superview = superview.superview) { CGAffineTransform superviewTransform = superview.transform; transform = CGAffineTransformConcat(transform, superviewTransform); } 这个变换在iOS 6和7下得到了正确的计算,但是iOS 8改变了旋转模型,现在视图总是返回标识变换(不旋转),不pipe设备如何定向。 尽pipe如此,来自运动pipe理器的数据仍然以标准方向固定。 监控UIDevice旋转通知和手动计算四个转换似乎是在iOS 8下获得此转换的一种方法,但它也似乎不好,因为设备的方向不一定匹配我的视图的方向(即,iPhone上的方向不是设备方向通常支持)。 将CMMotionManager的输出转化为iOS 8下特定UIView的方向的最好方法是什么?

startDeviceMotionUpdatesToQueue的安全更新间隔:withHandler:?

编辑:增加了一个全球,现在它的工作。 但我仍然有我的怀疑..请继续阅读:) 我想要在Y轴上获得加速,并在我的代码的不同部分使用它。 在这个例子中,我在while循环中使用它来进行testing。 我的代码正在工作,但我正确地使用UpdateToQueue …方法或是这种“非正统”的方式来实现我想要的? 我已经设置更新间隔在30毫秒,你认为这是一个“安全”的更新间隔? 我被告知,select一个时应该小心,因为现在或以后的硬件/ iOS更新可能无法跟上这样的时间间隔,这是真的吗? double myAcceleration; // a global.. -(void) play // my "main" method.. { CMMotionManager *motionManager = [[CMMotionManager alloc] init]; motionManager.deviceMotionUpdateInterval = 0.03; // update every 30ms [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) { myAcceleration = motion.userAcceleration.y; } ]; while(!self.stopButtonPressed) { NSLog(@"Y-Axis acceleration is %f", myAcceleration); } […]

当iPhone垂直时CMDeviceMotion偏航值不稳定

在iOS原型中,我使用了CMDeviceMotion.deviceMotion.yaw和CLHeading.trueHeading的组合来制作稳定的罗盘标题,这是一个响应和准确的标题。 这在iPhone保持平坦的时候效果很好,我有一个指向稳定罗盘标题的graphics箭头。 当iPhone在portait模式下保持垂直状态时,问题就出现了。 UIDeviceOrientation不断从UIDeviceOrientationFaceDown更改为UIDeviceOrientationFaceUp并返回。 这使得偏航值可以根据音高的微小变化来回跳动+/- 180度。 是否有可能将设备locking在一个方向上,以获得稳定的偏航值,预测没有毛刺的变化或以其他方式计算陀螺仪偏航(或以此方向滚动)? 这个可怜的家伙有同样的问题,没有答案。 双点可能的人! 🙂 https://stackoverflow.com/questions/10470938/euler-angle-yaw-not-working-when-iphone-orientation-changes

Motion Manager不在Swift中工作

我尝试在Swift中使用运动pipe理器,但是我的更新块里面的日志从不打印。 var motionManager: CMMotionManager = CMMotionManager() motionManager.accelerometerUpdateInterval = 0.01 println(motionManager.deviceMotionAvailable) // print true println(motionManager.deviceMotionActive) // print false motionManager.startDeviceMotionUpdatesToQueue(NSOperationQueue.currentQueue(), withHandler:{ deviceManager, error in println("Test") // no print }) println(motionManager.deviceMotionActive) // print false 我的Objective-C实现工作正常。 有谁知道为什么我的更新块没有被调用?

使用CMMotionManager测量倾斜angular度

假设你正在拿着一个iphone / ipad,屏幕正对着你,纵向。 您将设备倾斜到一边,使屏幕朝向您。 如何使用CMMotionManager测量静态倾斜angular度? 这似乎是一个简单的问题,应该有一个简单的答案,但我找不到任何方法不会消失到四元数和旋转matrix。 任何人都可以指向我一个工作的例子吗?