1

CMMotion に関する Apple のドキュメントを読みましたが、加速度計データを NSLog にするために行う必要があるすべてのことは、アプリで行われているようです。ただし、アプリを実行して画面を反転すると、加速度計からデータが返されません。実行時エラーはありません。これが私のコードです:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    ad = [[CMMotionManager alloc] init];
    //[ad startDeviceMotionUpdates];
    [ad startAccelerometerUpdates];

    //Returns Null
    NSLog(@"Accelerometer Data %@", ad.accelerometerData);

    BOOL accelerometerAvailable = ad.isAccelerometerAvailable?YES:NO;

    // Returns false, else statement is logged
    if(accelerometerAvailable) {
    NSLog(@"I guess it is...");
    } else {
    NSLog(@"I guess it is not...");
      }

    [ad startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]     withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
    NSLog(@"Your accelerometer data is: %@", accelerometerData.acceleration);
}];

 }

このコードを時間間隔でデータを返す別のアプリに追加して、データを取得していない理由がviewDidLoadが1回しか呼び出されないためであることを確認しました。私はまだ何も手に入れませんでした。

4

1 に答える 1

2

ここでの私の間違い。この問題は、iOSシミュレーターを使用してアプリケーションを実行していることが原因です。どうやら、加速度計はその中で動作しません。シェイクとローテーションのイベントが許可されていたので、それらは加速度計用であると思いました。ただし、これらは画面の位置を変更するためのものであり、加速度計とは無関係です。Appleがこれをドキュメントに含めれば役立つでしょう。

于 2012-07-23T23:13:03.253 に答える