1

私はやや奇妙な実装をしています。私のアプリケーションはGPSデータを継続的に使用しており、それを使用していくつかのタスクを実行する必要があります。また、デバイスが静止しているか移動しているかを検出するために、加速度計を実装しました。デバイスが静止しているときは、を呼び出してGPSフェッチを停止stopUpdatingLocationし、デバイスが移動しているときはを呼び出しますstartUpdatingLocation。これは、フォアグラウンドとバックグラウンドの両方で正常に機能します。

ただし、デバイスの再起動時にアプリケーションをバックグラウンドで起動したいのですが。これは正常に機能します。plistに「voip」キーを追加し、applicationDidFinishLaunchGPSフェッチコードを開始し、加速度計を開始しました。

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