Пример: Скачать среду можно с сайта для разработчиков Android (http://developer.android.com/sdk/index.html). Там скачать можно только Android Studio |
Принципы работы c жестами вводимыми пользователями
11.3 Использование созданных жестов в приложении
Для распознавания жестов необходимо добавить элемент GestureOverlayView в XML файл активности. И этот файл может выглядеть, например, как показано на рис. 11.4:
увеличить изображение
Рис. 11.4. XML файл активности приложения, элемент GestureOverlayView обычный компонент интерфейса пользователя
Можно добавить элемент GestureOverlayView поверх всех компонентов, как прозрачный слой, в этом случае XML файл активности может выглядеть так, как показано на рис. 11.5.
увеличить изображение
Рис. 11.5. XML файл активности приложения, элемент GestureOverlayView поверх всех компонентов интерфейса пользователя
Далее необходимо обработать ввод жеста пользователя, сравнить с загруженными жестами, и либо определить жест, либо сообщить пользователю, что такого жеста нет. Теперь вся работа будет выполняться в java файле, описывающем главную (и единственную) активность приложения. Внесем в этот класс следующие дополнения:
- Класс активности должен реализовывать интерфейс OnGesturePerformedListener, для этого в объявление класса добавим конструкцию:
implements OnGesturePerformedListener;
- Нам понадобятся экземпляры классов GestureLibrary и GestureOverlayView, поэтому в качестве полей класса активности объявим следующие переменные:
GestureLibrary gLib; GestureOverlayView gestures;
- В методе onCreate() выполним следующие действия:
В первой строке выполнена инициализация переменной gLib жестами, загруженными из файла gestures папки res/raw/.
gLib = GestureLibraries.fromRawResource(this, R.raw.gestures); if (!gLib.load()) { finish(); }
Оператор if выполняет проверку загружены ли жесты, если нет, выполняется выход из приложения.
- Добавим в метод onCreate() еще две строчки:
gestures = (GestureOverlayView) findViewById(R.id.gestureOverlayView1); gestures.addOnGesturePerformedListener(this);
Для инициализации переменной gesture и подключения к ней слушателя событий появления жеста.
- И наконец напишем реализацию метода OnGesturePerformed(), который и будет вызываться при появлении события, соответствующего какому-либо жесту.
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) { //Создаёт ArrayList c загруженными из gestures жестами ArrayList<Prediction> predictions = gLib.recognize(gesture); if (predictions.size() > 0) { //если загружен хотябы один жест из gestures Prediction prediction = predictions.get(0); if (prediction.score > 1.0) { if (prediction.name.equals("one")) tvOut.setText("1"); else if (prediction.name.equals("stop")) tvOut.setText("stop"); else if (prediction.name.equals("two")) tvOut.setText("2"); }else{ tvOut.setText("Жест неизвестен"); } } }
В приложении всего лишь распознаются жесты и в информационное поле выводится информация о том, что за жест был использован. В листинге 11.1 представлен возможный код приложения.