Рисуване и разпознаване на жестове с GestureBuilder

В този урок ще работим с жестове. Нека създадем приложение, в което потребителят може да нарисува някаква драсканица с пръст и програмата ще му даде индикатор за сходството на това, което е нарисувал с посочените в него референтни обекти. Ще зададем в основата (направим библиотека) от 5 цифри: 1, 2, 3, 4, 5, като приложим съответните имена към тях и когато потребителят изтегли цифра, например 2, програмата ще покаже, че числото 2 е нарисувана с такава точност, тоест нашето приложение ще разпознае въведения жест.

За да започнете да създавате тази програма, първо трябва да подготвите файл с референтни жестове, с които ще се извърши сравнението, изтеглено от потребителя. За целта ще използваме стандартното приложение за Android с име Конструктор на жестове, който се появява в Android OS от версия 1.6:

разпознаване

Същността на приложението е, че можете да създавате всякакви жестове там и да им присвоявате имена, файлът със създадените жестове се записва на SD картата на устройството под името жестове. Трябва да създадем такъв файл, да го извлечем от SD картата на устройството на компютъра и да го поставим във файловете на нашия проект в специално създадена папка res/raw/жестове:

жестове

Нарисувах 5 числа от 1 до 5 и им дадох съответни имена. За да улесня живота ви, публикувам своя 5-цифрен файл с жестове. Но можете да създадете свой собствен файл, като инсталирате програмата Gesture Builder на устройството.

Е, сега нека се захващаме за работа. Създайте нов проект, изберете Blank Activity, създайте сурова папка и пуснете там жестовия файл (както на екранната снимка). Интерфейсът на програмата ще се състои от зона за жестове за рисуване, зададена с помощта android.gesture.GestureOverlayView и текстово поле TextView, което ще покаже резултатите от сравнението на нарисуваните жестове с референтните жестове в жестовете. Отваряне на файла Activity_main.xml и добавете следните елементи:

Сега да преминем към писането на кода на приложението. Създадохме обект GestureOverlayView и той трябва да бъде зададен OnGesturePerformedListener, който ще проследява рисуването на драскулки на потребителя. Когато жестът е нарисуван, жестът се предава на метода onGesturePerformed (), при което въведеният жест се сравнява с всички форми, налични в библиотеката с жестове, и след това връща отговор под формата на списък, който показва коефициента на сходство между жеста, нарисуван от потребителя, и всеки в библиотеката. Всеки отговор за сравнение от този списък съдържа името на жеста, който се сравнява, посочен при създаването му в конструктора на жестове и оценка за това как е нарисуван. Като правило, ако този резултат е по-голям от 1, тогава има добра прилика.

И така, отворете файла MainActivity.java и въведете необходимия код:

Това е изпълнението на приложение за разпознаване на рисунки и жестове в Android. Сега стартираме приложението и виждаме какво се е случило. Влязох в krakozyabra, подобно на номер 1, и получих следния отговор:

жестове

Надявам се да ви е харесало и да ви е полезно!