1

我正在做一个有点奇怪的实现。我的应用程序连续使用 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];
            });
        }];

有人可以帮我解决这个问题吗?可能吗?

4

0 回答 0