2013-01-05 9 views
9

私の電話機を始点から終点までY軸上で移動すると、画面上に単純な線を描く単純なアプリケーションを作成したいと思います。例えば、点a(0,0)あなたはメートル/秒/秒で測定された(モーション・マネージャを初期化し、適切な加速度値のためmotion.userAcceleration.y値をチェックする必要がiOSがユーザーの動きを検出しました

enter image description here

+1

私は同じ問題に直面しているので、私にあなたのコードを教えてもらえますか?私は試みたが、それは私のアプリをクラッシュさせる。 – user2526811

+0

@ user2526811、私は今夜あなたにコードを送ります、あなたのメールadrressを掲示してください –

+0

あなたの返信をありがとう。私のIDは 'pakshay8800 @ gmail.com'です – user2526811

答えて

14

:B(0、10)を指すようにする

デモを助けてください)。

以下の例では、私が見つけた0.05を確認すると、電話機のかなり前向きな動きです。私はまた、描画する前にユーザが大幅に遅くなる(-Y値)まで待つ。デバイスのMotionUpdateIntervalを調整することで、アプリのスピードの変化に対する応答性が決まります。今は1/60秒でサンプリングしています。

motionManager = [[CMMotionManager alloc] init]; 
motionManager.deviceMotionUpdateInterval = 1.0/60.0; 
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) { 
    NSLog(@"Y value is: %f", motion.userAcceleration.y); 
    if (motion.userAcceleration.y > 0.05) { 
     //a solid move forward starts 
     lineLength++; //increment a line length value 
    } 
    if (motion.userAcceleration.y < -0.02 && lineLength > 10) { 
     /*user has abruptly slowed indicating end of the move forward. 
     * we also make sure we have more than 10 events 
     */ 
     [self drawLine]; /* writing drawLine method 
          * and quartz2d path code is left to the 
          * op or others */ 
     [motionManager stopDeviceMotionUpdates]; 
    } 
}]; 

注このコードは、電話機が平坦に横たわっまたはわずかに傾斜し、ユーザが前方に押圧されていること(アウェイ自体から、又は電話で移動)ポートレートモードであることを前提としています。

+1

tksジョン、それは素晴らしい仕事です:D –

+1

は、バックグラウンドで動作しません。 Goでユーザーの場所を追跡するには、そのユーザーの背景を有効にする必要があります。それを達成する方法はありますか? –

+1

@MohammadAbdurraafayコメントに質問するのではなく、[新しい質問をする](http://stackoverflow.com/questions/ask)を参照して回答やヘルプなどを入手してください。 –

関連する問題