我正在开发与加速相关的应用程序。我用的是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];