0

を取得するために deviceMotion を使用していuseracceleration(x, y, z)ます。私の目的は、各反復でアプリケーションが 3 つのコンポーネントを連続して書き込むファイルテキストを作成することです。

MotionGraphs コード サンプルを使用しています。

どのように可能ですか - 直接、または最初に配列を作成する必要がありますか? この配列。NSMutableArray または NSMutableNumber ですか?

私はこの質問を探していましたが、迷っています。:-(

私は Objective-C の専門家ではありませんが、ファイルを開いた Pascal コードを覚えており、各反復で書いていましたが、プログラミングが変更されていることを確認しました。

最初は、さまざまなフィルターや識別ウィンドウを考慮していません。彼らのために、フリースケールの手順を実装しました。加速度計のデータを保存したり、deviceMotion userAcceleration を使用して加速度計からデータを保存したりしています。

    float minX = 1.0f;

    float minY = 1.0f;

    float minZ = 1.0f;

    NSMutableArray *container = [[NSMutableArray alloc] init];

    -(void)startUpdatesWithSliderValue:(int)sliderValue
    {

        NSTimeInterval delta = 0.005;

        NSTimeInterval updateInterval = deviceMotionMin + delta * sliderValue;

        CMMotionManager *mManager = [(APLAppDelegate *)[[UIApplication sharedApplication] delegate] sharedManager];

        APLDeviceMotionGraphViewController * __weak weakSelf = self;

        [container addObject:[NSNumber numberWithFloat:deviceMotion.userAcceleration.x]];

        [container addObject:[NSNumber numberWithFloat:deviceMotion.userAcceleration.y]];

        [container addObject:[NSNumber numberWithFloat:deviceMotion.userAcceleration.z]];
    }

//Finally we have to dump data to filetext, this is I don´t know correctly.
4

1 に答える 1

1

1NSMutableArray を作成します*container= [[NSMutableArray alloc] init]; あなたのコンテナになります。

2 モーションを検出するための加速度計デリゲートメソッド内で、3つの軸のそれぞれに最小値を設定してください。例:float min_X = 1.0f; float min_y = 1.0f; float min_Z = 1.0f

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {

}

3 次のように単純なフィルターロジックを使用します(加速度は±2.3gで最大化されるため、正と負の両方のしきい値を考慮する必要があることに注意してください。

if ((acceleration.x > min_X || acceleration.x < -min_X) && (Y's..) && (Z's...) ) {

[container addObject:[NSNumber numberWithFloat:acceleration.x]];
[container addObject:[NSNumber numberWithFloat:acceleration.y]];
[container addObject:[NSNumber numberWithFloat:acceleration.z]];

}

4 配列は、3つのグループ(x、y、z)のNSNumberでいっぱいである必要があります。

5フィルターが必要です。そうしないと、加速度計がテーブルに座っているだけで小さな振動を拾う可能性があります。


警告: アレイはすぐにいっぱいになるため、データを記録する期間に基づいて、サンプルレートを許容範囲に設定します。

于 2012-12-21T03:03:53.853 に答える