如何启动和停止CMMotionManager startAccelerating和stopAccelerating,而i



我正在开发与加速相关的应用程序。我用的是CMMtionManager对象。但当我调用startaccelerating方法,它的工作,并不断调用该方法,即使iphone在空闲模式。如何在iphone加速和空闲时停止和开始加速。

- (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];
                        });   
     }];
}

请帮助我。

你试过添加这个吗?:

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

相关内容

  • 没有找到相关文章

最新更新