我正在做一个有点奇怪的实现。我的应用程序连续使用 GPS 数据,并使用它来完成一些任务。我还实现了加速度计的东西来检测设备是静止的还是移动的。当设备静止时,我通过调用停止 GPS 获取stopUpdatingLocation
,当设备移动时,我调用startUpdatingLocation
。这在前台和后台都可以正常工作。
但是我希望我的应用程序在设备重新启动时在后台启动。这工作正常。我在 plist 中添加了“voip”键,并applicationDidFinishLaunch
开始 GPS 获取代码并启动加速度计。
但我发现一旦设备保持静止(stopUpdatingLocation
),加速度计就不会被调用。因此,我无法检测到设备移动。加速度计回调没有被调用。这是我正在使用的代码示例:
mMotionManager = [[CMMotionManager alloc] init];
if (mMotionManager.accelerometerAvailable) {
mMotionManager.accelerometerUpdateInterval = 1.0/10.0;
mOperationQueue = [[NSOperationQueue alloc] init];
[mMotionManager startAccelerometerUpdatesToQueue:mOperationQueue withHandler:^(CMAccelerometerData *data, NSError *error){
dispatch_async(dispatch_get_main_queue(), ^{
//[self onDeviceMotion];
[mAccelerometerReadings addObject: data];
[self updateViewsWithFilteredAcceleration:data.acceleration];
});
}];
有人可以帮我解决这个问题吗?可能吗?