2013-03-25 4 views
3

가속 관련 앱을 개발 중입니다. 나는 CMMtionManager 개체를 사용하고 있습니다. 하지만 내가 startaccelerating 메서드를 호출 할 때 그 작업을 계속해서 그 메서드를 심지어 유휴 모드의 iphone이라고 부릅니다. 아이폰 가속 및 유휴 상태에서 가속을 중지하고 시작하는 방법.가속 모드 또는 유휴 모드에서 iphone을 사용하는 동안 CMMotionManager를 시작하고 중지하는 방법 startAccelerating 및 stopAccelerating?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    motionManager=[[CMMotionManager alloc]init]; 
    motionManager.accelerometerUpdateInterval=2; 



- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    [self startMyMotionDetect];  
} 



- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 
    [motionManager stopAccelerometerUpdates]; 
// Request to stop receiving accelerometer events and turn off accelerometer 

} 


- (CMMotionManager *)motionManager 
{ 
    motionManager = nil; 

    id appDelegate = [UIApplication sharedApplication].delegate; 

    if ([appDelegate respondsToSelector:@selector(motionManager)]) { 
     motionManager = [appDelegate motionManager]; 
    } 

    return motionManager; 
} 
- (void)startMyMotionDetect 
{ NSLog(@"active %d",motionManager.accelerometerActive); 

    NSLog(@"availabilty %d",motionManager.accelerometerAvailable); 



    [motionManager 
    startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init] 
    withHandler:^(CMAccelerometerData *data, NSError *error) 
    { 

     dispatch_async(dispatch_get_main_queue(), 
         ^{ 
         NSLog(@"hello"); 
          [motionManager stopAccelerometerUpdates]; 
         }); 

    }]; 
} 

+0

유휴 모드 무엇을 의미합니까를? : 추가하려고 했습니까? 휴대 전화를 3g으로 1 초 동안 계속 가속하면 30m/s로 움직이지만 가속도는 0이 될 수 있습니다. 유휴인가? 아니면 앱이 백그라운드에 있다는 것을 의미합니까? 제목에 언급 된 이러한 '시작과 멈춤'방법은 어디에 있습니까? – Kay

+0

@ 케이 Comments.when 주셔서 감사합니다 내가 메신저를 시작하면 x, y, z values.when와 가속 데이터를 가속 점점 장치를 중지합니다. 나는 여전히 x, y, z 값을 받고있다. idel에서 iphone이 다양하게 변하는 것은 가속화되지 않는다는 것을 의미합니다. – srinadh

+0

나는 본다. 원시 가속도계 값을 사용하면 항상 중력이 포함됩니다. [규모] (http://en.wikipedia.org/wiki/Magnitude_%28mathematics%29)는 약 9.81입니다. [DeviceMotion] (http://developer.apple.com/library/ios/#documentation/CoreMotion/Reference/CMDeviceMotion_Class/Reference/Reference.html)을 사용하면 인생이 더 쉬워집니다. [이벤트 처리 가이드] (http://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/motion_event_basics/motion_event_basics.html#//apple_ref/doc/uid/TP40009541-CH6-SW18)를 참조하십시오. 사용 방법. – Kay

답변

1

당신이

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(stopAccelerometer) 
              name:UIApplicationDidEnterBackgroundNotification 
             object:nil]; 
+0

아니요, 아니요. 내 아이폰이 가속되지 않을 때 가속도계를 멈추게하지 마시오. – srinadh

+1

저는 float x, y, z 변수를 만들고 값을 검사 할 수 있다고 생각합니다. 차이가 각 변수에 대해 0이면 멈출 수 있습니다. 그러나 가속도 센서를 멈춘다면 가속도계를 어떻게 감지 할 수 있습니까? 왜 수표를 그만 두길 원하니? –

+0

메신저 가속도계 데이터 x, y, z를 얻지 만 0.123,0.335,0.234와 같은 값은 iphone 장치 가속을 멈추는 것과 같습니다. – srinadh