0

我正在使用 deviceMotion 来获取useracceleration(x, y, z). 我的目标是创建一个文件文本,在每次迭代中,我的应用程序都会连续写入 3 个组件。

我正在使用 MotionGraphs 代码示例。

怎么可能 - 直接,或者必须先创建一个数组?这个数组;它是 NSMutableArray 还是 NSMutableNumber?

我一直在寻找这个问题,我迷路了。:-(

我不是 Objective-C 专家,但我记得我打开文件的 Pascal 代码,然后我在每次迭代中编写,但我检查了:编程已经改变。

一开始我们没有考虑不同的过滤器或区分窗口。对于他们,我已经实施了飞思卡尔程序。我只是想保存加速度计数据/使用 deviceMotion userAcceleration 存储来自加速度计的数据。

    float minX = 1.0f;

    float minY = 1.0f;

    float minZ = 1.0f;

    NSMutableArray *container = [[NSMutableArray alloc] init];

    -(void)startUpdatesWithSliderValue:(int)sliderValue
    {

        NSTimeInterval delta = 0.005;

        NSTimeInterval updateInterval = deviceMotionMin + delta * sliderValue;

        CMMotionManager *mManager = [(APLAppDelegate *)[[UIApplication sharedApplication] delegate] sharedManager];

        APLDeviceMotionGraphViewController * __weak weakSelf = self;

        [container addObject:[NSNumber numberWithFloat:deviceMotion.userAcceleration.x]];

        [container addObject:[NSNumber numberWithFloat:deviceMotion.userAcceleration.y]];

        [container addObject:[NSNumber numberWithFloat:deviceMotion.userAcceleration.z]];
    }

//Finally we have to dump data to filetext, this is I don´t know correctly.
4

1 回答 1

1

1 创建 NSMutableArray *container = [[NSMutableArray alloc] init]; 成为你的容器。

2 在检测运动的加速度计委托方法中,请务必为 3 个轴中的每一个设置一个最小值。例如浮动 min_X = 1.0f; 浮动 min_y =1.0f; 浮动 min_Z = 1.0f

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {

}

3 使用简单过滤器逻辑,如下所示:(请记住,加速度最大值为 +- 2.3g,因此需要考虑正阈值和负阈值。

if ((acceleration.x > min_X || acceleration.x < -min_X) && (Y's..) && (Z's...) ) {

[container addObject:[NSNumber numberWithFloat:acceleration.x]];
[container addObject:[NSNumber numberWithFloat:acceleration.y]];
[container addObject:[NSNumber numberWithFloat:acceleration.z]];

}

4 Array 应包含三个一组 (x,y,z) 的 NSNumber。

5需要过滤器,否则加速度计可以拾取放在桌子上的小振动。


警告: 阵列会很快填满,因此请根据您想要记录数据的时间将采样率设置为可接受的范围。

于 2012-12-21T03:03:53.853 回答