我正在使用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.
答案 0 :(得分:1)
1 创建NSMutableArray * container = [[NSMutableArray alloc] init];成为你的容器。
2 在用于确定检测运动的Accelerometer委托方法中,确保为3轴中的每一个设置最小值。例如float min_X = 1.0f; float min_y = 1.0f; float 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 数组应该以三个为一组(x,y,z)填充NSNumbers。
5 需要过滤器,否则加速度计可以选择只是坐在桌子上的小振动。
警告:阵列将快速填满,因此请根据您想要记录数据的时间将采样率设置为可接受的范围。