2012-08-03 2 views
0
-(void)play 
{ 
    CMMotionManager *motionManager = [[CMMotionManager alloc] init]; 
    [motionManager startDeviceMotionUpdates]; 

    while(!self.stopButtonPressed) 
    { 
     NSLog(@"Y-Axis acceleration is %f", motionManager.deviceMotion.userAcceleration.y); 
    } 
} 

콘솔 :이 코드에서 "기본"업데이트 간격 (가속도계)을 사용할 수 있습니까?

2012-08-03 13:06:10.798 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.803 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.805 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.807 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.808 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.810 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.812 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.814 MyProject[8896:3a03] Y-Axis acceleration is 0.000000 
2012-08-03 13:06:10.817 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.820 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.822 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.824 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.826 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.828 MyProject[8896:3a03] Y-Axis acceleration is 0.013498 
2012-08-03 13:06:10.831 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.833 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.835 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.837 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.840 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.842 MyProject[8896:3a03] Y-Axis acceleration is -0.082339 
2012-08-03 13:06:10.846 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.848 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.850 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.852 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.855 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.857 MyProject[8896:3a03] Y-Axis acceleration is -0.099570 
2012-08-03 13:06:10.859 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.862 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.864 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.866 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.868 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.870 MyProject[8896:3a03] Y-Axis acceleration is -0.120698 
2012-08-03 13:06:10.873 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.875 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.877 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.879 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.881 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.882 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.884 MyProject[8896:3a03] Y-Axis acceleration is -0.125984 
2012-08-03 13:06:10.888 MyProject[8896:3a03] Y-Axis acceleration is -0.083223 
....etc. 

는 콘솔에 따르면, 가속도 값은 평균

내가 명시 적으로 업데이트 간격으로 큐를 사용하지 않는에있는 모든 14 마이크로 초 업데이트됩니다, 그래서 나는 생각한다 기본 업데이트 간격은 약 14 마이크로 초입니다 (이 코드에서와 같이 while 루프에서 새 값을 요청할 때)?

아니면 "우발적 인"것인가? 나는 그것에 의존해서는 안됩니까? 나는 그것을 몇 번 테스트했고 업데이트 간격은 항상 13-14ms 사이이지만, 업데이트 간격을 명시 적으로 설정하지 않으면 업데이트 간격이 나중에 테스트에서 크게 변경된다는 것은 가능합니다. 그 당시 어떤 이유로 든 "더 바쁘다"(보통보다 ..)일까요?

UIAccelerometer 클래스 참조에서 어떤 당신은이 간격에 의존해서는 안 도움

답변

1

, 원인 주셔서 감사합니다 - 최대 업데이트 간격이 가능한 하드웨어를 기반으로 애플이 향후 기기에서 가속도계 칩을 업데이트 할 때, 그래서, 주파수 월 변경 (현재 iPad 및 iPhone에서도 다를 수 있음)

+0

그래서 대기열을 사용하고 업데이트 간격을 명시 적으로 설정해야합니다. –

+0

음, 그렇지만 가속도계 데이터 만 필요하면 편리한 위임 시스템과 함께 UIAcceleremeter를 사용할 것입니다. –

+0

흠 ... 나는 대표단을 잘 이해하지 못하고 있으며, 문서는 루프 모드 등을 실행하는 것과 관련하여 매우 복잡해 보인다. 나는 [motionManager startAccelerometerUpdatesToQueue : [NSOperationQueue mainQueue] withHandler : (CMAccelerometerData * accelerometerData, NSError * error) { // 원본 게시물에서 제공 한 코드를 사용하여 여기에 무엇이 들어 있는지 확신 할 수는 없지만 ... }]; ' –