2013-01-05 26 views
9

Chcę utworzyć prostą aplikację, która rysuje prostą linię na ekranie, gdy przenoszę telefon na osi Y od punktu początkowego do punktu końcowego, na przykład od punktu a (0,0) do punktu B (0, 10) proszę o pomocWykrywanie ruchu użytkownika iOS użytkownika

demo:

enter image description here

+1

Czy możesz podać mi swój kod, ponieważ mam do czynienia z tym samym problemem. Próbowałem, ale to spowodowało awarię mojej aplikacji. – user2526811

+0

@ user2526811, wyślę ci kod dziś wieczorem, opublikuj swój adres mailowy –

+0

Dziękuję za odpowiedź. Mój identyfikator to "pakshay8800 @ gmail.com" – user2526811

Odpowiedz

14

trzeba zainicjować menedżera ruchu, a następnie sprawdzić motion.userAcceleration.y wartość odpowiednią wartość przyspieszenia (mierzona w metrach/sekundę/sekundę).

W poniższym przykładzie sprawdzam, czy 0,05, które znalazłem, jest dość przyzwoitym posunięciem do przodu telefonu. Czekam też, aż użytkownik znacznie zwolni (-Y wartość) przed rysowaniem. Dostosowując urządzenie, funkcja MotionUpdateInterval określi czas reakcji Twojej aplikacji na zmiany prędkości. Obecnie jest to próbkowanie w 1/60 sekundy.

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

Uwaga Ten kod zakłada, że ​​telefon leży płasko lub lekko pochylony i że użytkownik naciska do przodu (z dala od siebie, lub przeniesienie z telefonem) w trybie pionowym.

+1

tks John, to działa świetnie: D –

+1

Nie działa w tle. Aby śledzić lokalizację użytkowników w Go, musimy włączyć włączenie tła. Czy jest jakiś sposób, abyśmy mogli to osiągnąć? –

+1

@MohammadAbdurraafay Zamiast zadawać pytanie w komentarzach, powinieneś [zadać nowe pytanie] (http://stackoverflow.com/questions/ask), aby uzyskać odpowiedzi, pomoc itp. –

Powiązane problemy