5

編集:グローバルを追加し、現在は機能しています。しかし、私はまだ疑問を持っています..読んでください:)

必要に応じて Y 軸で加速を実行し、コードのさまざまな部分で使用したいと考えています。この例では、テスト目的で while ループ内で使用しています。

私のコードは機能していますが、UpdateToQueue... メソッドを正しく使用していますか、それともこの種の「非正統的な」方法で目的を達成していますか?

更新間隔を 30 ミリ秒に設定しましたが、これは「安全な」更新間隔だと思いますか? 現在またはそれ以降のハードウェア/iOS の更新がそのような間隔に追いつかない可能性があるため、1 つを選択するときは注意する必要があると言われましたが、これは本当ですか?

double myAcceleration; // a global..

-(void) play // my "main" method..
{
    CMMotionManager *motionManager = [[CMMotionManager alloc] init];
    motionManager.deviceMotionUpdateInterval = 0.03; // update every 30ms
    [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue]  
                                       withHandler:^(CMDeviceMotion *motion, NSError *error) 
                                       {
                                           myAcceleration = motion.userAcceleration.y;
                                       }
    ];

    while(!self.stopButtonPressed)
    {
        NSLog(@"Y-Axis acceleration is %f", myAcceleration);
    }
}
4

2 に答える 2

3

そんな使い方もOKです。

時間間隔について: 現在の最大更新制限は 100Hz (1 秒あたり 100 回、1 回の加速度計更新で 0.01 秒) で、最小値は 10Hz (AFAIK) です。このような範囲で時間間隔を設定した場合、Apple ガジェットの現在お​​よび次のリリースで確実にサポートされます。しかし、デフォルトの時間間隔に頼ることはできず、それがどこでも同じであることを祈ることはできません.Appleが最小値と最大値を変更する可能性があるためです(たとえば、新しいICチップは500Hzのリフレッシュレートをサポートします)。したがって、デフォルトも変更されます.

于 2012-08-03T20:55:14.820 に答える