2013-01-05 17 views
9

Ich möchte eine einfache App erstellen, die eine einfache Linie auf dem Bildschirm zeichnet, wenn ich mein Handy auf der Y-Achse von einem Startpunkt zum Endpunkt z. B. von Punkt a (0,0) verschiebe zu Punkt b (0, 10) helfen bitteiOS erkennt Bewegung des Benutzers

Demo:

enter image description here

+1

Können Sie mir Ihren Code geben, weil ich das gleiche Problem habe. Ich habe es versucht, aber es stürzt meine App ab. – user2526811

+0

@ user2526811, ich werde Ihnen heute Abend den Code senden, post Ihre E-Mail-Adresse –

+0

Vielen Dank für Ihre Antwort. Meine ID ist 'pakshay8800 @ gmail.com' – user2526811

Antwort

14

Sie müssen den Motion Manager initialisieren und dann prüfen, in Metern motion.userAcceleration.y Wert für einen entsprechenden Beschleunigungswert (gemessen/Sekunde/Sekunde).

Im Beispiel unten überprüfe ich für 0,05, die ich gefunden habe, ist eine ziemlich gute Vorwärtsbewegung des Telefons. Ich warte auch, bis der Benutzer vor dem Zeichnen deutlich verlangsamt (-Y-Wert). Durch Anpassen des Geräts wird mit MotionUpdateInterval das Reaktionsverhalten Ihrer App auf Geschwindigkeitsänderungen festgelegt. Momentan wird mit 1/60 Sekunden gemessen.

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]; 
    } 
}]; 

Hinweis Dieser Code geht davon aus, dass das Telefon flach oder leicht geneigt ist, liegt und dass der Benutzer nach vorne schiebt (weg von selbst oder mit Telefon bewegt) im Portrait-Modus.

+1

tks John, es funktioniert super: D –

+1

Funktioniert nicht im Hintergrund. Um den Standort des Benutzers unterwegs zu verfolgen, müssen wir den Hintergrund aktivieren. Können wir das irgendwie erreichen? –

+1

@MohammadAbdurraafay Anstatt eine Frage in den Kommentaren zu stellen, sollten Sie [eine neue Frage stellen] (http://stackoverflow.com/questions/ask) Antworten, Hilfe usw. –

Verwandte Themen