Откриване на физически жест с акселерометър

В приложение за Android, което правя, бих искал да открия, когато потребител държи телефон в ръката си, прави жест, както би направил, когато хвърля фризби. Виждал съм няколко приложения, прилагащи това, но не мога да намеря примерен код или урок в мрежата.

Би било чудесно с някои мисли за това как може да се направи това и т.н.

Би било още по-добре с примерен код или връзка към урок.


person CornflakesDK    schedule 08.12.2011    source източник


Отговори (2)


Акселерометърът ви предоставя поток от 3d вектори. В случай, че телефонът ви е в помощ, посоката му е противоположна на земната гравитация и размерът е същият. (по този начин можете да определите ориентацията на телефона)

Ако потребителят позволи ако падне, стойността на вектора ще отиде на 0 (процесът като безтегловност на космическа станция)

Ако потребителят направи някакъв жест, без да го хвърля, посоката ще се измести и амплитудата ще се повиши, след това ще спадне и след това ще се повиши отново (когато потребителят спре движението). За да определите как изглежда, можете да направите някои изследвания, като запишете данни от акселерометъра и изпълните жестове по желание.

Имайте предвид, че този акселерометър е доста шумен - ще трябва да направите известно осредняване на близките стойности, за да получите значими резултати.

Мисля, че един работещ подход за съпоставяне на жеста биха били инвариантните моменти (като моментите Hu, използвани за разпознаване на изображения) - векторът на акселерометъра във времето дефинира 4-измерно пространство и ще ви трябва набор от инвариантни моменти на мащабиране/въртене. Проектирането на такъв комплект не е лесно, но изчисляването не е сложно.

След като получите вашите моменти, можете да използвате стандартни техники за съпоставяне на вектори с клъстери. (вижте модулите „moments“ и „cluster“ от нашия проект javaocr: http://javaocr.svn.sourceforge.net/viewvc/javaocr/trunk/plugins/ )

PS: може да се измъкнете само със скорост с течение на времето, което създава двуизмерно пространство и може да бъде анализирано с javaocr на място.

person Konstantin Pribluda    schedule 08.12.2011

Не точно това, което търсите:

Съхранявайте ориентация към масив - и сравнявайте

Ориентацията за проследяване работи добре. Може би можете да направите нещо подобно с данните от акселерометъра (без никаква интеграция).

Подобен въпрос е Рисуване във въздуха с телефон с Android.

Любопитен съм какви други отговори ще получите.

person Ali    schedule 08.12.2011