5

私はiOSで歩数計を実装しています。重要な要件は、アプリケーションがバックグラウンドモード(例えば、デバイスがロックされている、またはユーザーがホームボタンを押しているなど)にする場合でも機能する必要があることです。あなたはNike +、Runtastic歩数計などApp Storeでそのような実装を見ることができます。バックグラウンドモードで実装されたCore Motionの加速度計の奇妙な動作

これは、コアモーション、具体的にはCMMotionManagerで可能であり、Required background modesという追加のプロパティがlocationに設定されていることを確認しました。

私は以下のコードを使用して簡単なテストを実行し、奇妙な問題を発見:

// AppDelegate.m 
- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    if(self.motionManager==nil) { 
     self.motionManager=[[CMMotionManager alloc] init]; 
    } 
    self.motionManager.accelerometerUpdateInterval=1/50; 

    if(self.accelerometerReadings==nil) 
     self.accelerometerReadings=[[NSMutableArray alloc] init]; 

    [self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [self.accelerometerReadings addObject:accelerometerData]; 
     }); 
    } 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    NSLog(@"The number of readings %d",self.accelerometerReadings.count); 

    // do something with accelerometer data... 
} 

私はiPhone 4SとiOS 6.1でこのコードを試してみました。アプリが起動されると、ホームボタンを押して5秒間(歩行をシミュレートするために)それを振って、アプリをもう一度開きます。これらの動作は数回繰り返されます。

2013-02-05 16:41:42.028 [1147:907] readings 0 
2013-02-05 16:41:51.572 [1147:907] readings 444 
2013-02-05 16:42:00.386 [1147:907] readings 1032 
2013-02-05 16:42:08.026 [1147:907] readings 1555 
... 

私は測定値の正確さをチェックしませんでしたが、迅速な観察は、すでにいくつかの問題を明らかに:私が得た出力です。このアプリがバックグラウンドモードで初めて実行されたときには、何も読んでいない(または時には読書が1つしかない)。

私はここで間違っていますか?これは歩数計を実装するための正しいアプローチですか?

+0

あなたは[accelerometerUpdateInterval](http://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMMotionManager_Class/Reference/Reference.html#//apple_ref/occ/instpを設定する必要があります/ CMMotionManager/accelerometerUpdateInterval)を 'deviceMotionUpdateInterval'の代わりに '1/50'に変更しました – Kay

+0

ニースキャッチ!残念ながら、これは結果を変えるものではありません。 –

+0

こんにちは、あなたの問題の解決策を見つけましたか? – Axarydax

答えて

関連する問題