2013-01-05 14 views
9

Voglio creare una semplice app che disegna una linea semplice sullo schermo quando sposto il mio telefono sull'asse Y da un punto iniziale a un punto finale, ad esempio dal punto a (0,0) al punto B (0, 10) si prega di aiutareiOS rileva il movimento dell'utente

demo:

enter image description here

+1

Puoi darmi il tuo codice perché sto affrontando lo stesso problema. Ho provato ma si blocca la mia app. – user2526811

+0

@ user2526811, ti invierò il codice stasera, inserisci la tua mail adrress –

+0

Grazie per la tua risposta. Il mio id è 'pakshay8800 @ gmail.com' – user2526811

risposta

14

È necessario inizializzare il responsabile del movimento e quindi controllare motion.userAcceleration.y valore per un valore di accelerazione appropriata (misurata in metri/secondo/secondo).

Nell'esempio seguente, controllo 0.05 che ho trovato è una mossa in avanti abbastanza decente del telefono. Aspetto anche che l'utente rallenti significativamente (-Y valore) prima di disegnare. La regolazione del dispositivo MotionUpdateInterval determinerà la reattività della tua app ai cambiamenti di velocità. In questo momento si sta campionando a 1/60 secondi.

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

Nota questo codice presuppone che il telefono sia posizionato orizzontalmente o leggermente inclinato e che l'utente sta spingendo in avanti (lontano da se stessi, o in movimento con telefono) in modalità verticale.

+1

tks John, funziona benissimo: D –

+1

Non funziona in background. Per tenere traccia della posizione degli utenti in Go, dobbiamo renderlo abilitato in background. C'è un modo per riuscirci? –

+1

@MohammadAbdurraafay Invece di porre una domanda nei commenti, dovresti [fare una nuova domanda] (http://stackoverflow.com/questions/ask) per ottenere risposte, aiuto, ecc. –

Problemi correlati