2012-08-03 1 views
3

편집 : 글로벌을 추가하고 지금은 일하고있어. 그러나 나는 여전히 의문의 여지가 있습니다. 읽어주세요.startDeviceMotionUpdatesToQueue의 안전한 업데이트 간격 : withHandler :?

필요할 때마다 가속을 사용하여 코드의 다른 부분에서 사용하고 싶습니다. 이 예제에서는 테스팅 목적으로 while 루프 안에 사용하고 있습니다.

코드가 작동하지만 올바르게 UpdateToQueue ... 메소드를 사용하고 있습니까? 아니면 이런 종류의 "정통하지 않은"방법입니다. 내가 원하는거야?

난 당신이 "안전한"업데이트 간격입니다 생각, 30 MS에서 업데이트 간격을 설정 한? 현재 또는 이후의 하드웨어/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); 
    } 
} 

답변

3

그런 식으로 사용해도 좋습니다.

시간 간격에 대한

: 현재 업데이트 최대 한계는 100Hz이다 (초당 100 번 업데이트 한 가속도계 0.01 초) 및 최소 (AFAIK)는 10Hz이다. 이러한 범위에서 시간 간격을 설정하면 Apple 가젯의 현재 및 다음 릴리스에서 확실하게 지원됩니다. 하지만 기본 시간 간격에 의존하고 모든 곳에서 동일하게 나타날 것이라고는기도 할 수없는, 원인 사과 (새로운 IC 칩이는 500Hz 주사율을 지원하는 것입니다. 예) 최소 및 최대를 변경 범위 등 기본도 변화 할 수 있습니다. 마지막으로

+0

? (나는 그것이 4 년이다고 알고있다. 그러나 헤이, 그것은 묻는 가치가있다) – inigo333

2

. 나는 내 자신의 질문 :

애플 문서에 대한 답을 발견

당신은 핵심 모션과 모션 데이터를 요청하면 모션 이벤트 업데이트 간격

를 선택, 당신은 업데이트 간격을 지정합니다. 앱의 요구 사항을 충족시키는 가장 큰 간격을 선택해야합니다. 간격이 길어질수록 앱에 전달되는 이벤트가 줄어들어 배터리 수명이 향상됩니다.

표 4-1은 일반적인 업데이트 빈도를 나열하고 이 해당 빈도로 생성 된 데이터로 수행 할 수있는 작업을 설명합니다. 가속 이벤트가 초당 100 회 전달되어야하는 앱이 거의 없습니다.

이벤트 주파수 (Hz) 사용 기기의 현재의 방향 벡터를 결정

10-20 적당한.

30-60 실시간 사용자 입력을 위해 가속도계를 사용하는 게임 및 기타 앱에 적합합니다.

70-100 고주파 움직임을 감지해야하는 애플리케이션에 적합합니다. 예를 들어이 간격을 사용하여 사용자가 기기를 때리거나 빠르게 흔들리는 것을 감지 할 수 있습니다.

보고 간격을 10 밀리 초 (ms)로 설정할 수 있습니다.이 간격은 100 Hz 업데이트 속도에 해당하지만 대부분의 응용 프로그램은 더 큰 간격으로 충분히 작동합니다.간단히 말해서

, 보그 이미 말했듯이 :는 10Hz-100Hz의

출처 : Choosing a Motion Event Update Interval 게시 된 그 최소 및 최대 주파수를 보았는가