Для распознавания жестов необходимо добавить элемент GestureOverlayView в XML файл активности. И этот файл может выглядеть, например, как показано на рис. 11.4:
Можно добавить элемент GestureOverlayView поверх всех компонентов, как прозрачный слой, в этом случае XML файл активности может выглядеть так, как показано на рис. 11.5.
Далее необходимо обработать ввод жеста пользователя, сравнить с загруженными жестами, и либо определить жест, либо сообщить пользователю, что такого жеста нет. Теперь вся работа будет выполняться в java файле, описывающем главную (и единственную) активность приложения. Внесем в этот класс следующие дополнения:
implements OnGesturePerformedListener;
GestureLibrary gLib; GestureOverlayView gestures;
gLib = GestureLibraries.fromRawResource(this, R.raw.gestures); if (!gLib.load()) { finish(); }
Оператор if выполняет проверку загружены ли жесты, если нет, выполняется выход из приложения.
gestures = (GestureOverlayView) findViewById(R.id.gestureOverlayView1); gestures.addOnGesturePerformedListener(this);
Для инициализации переменной gesture и подключения к ней слушателя событий появления жеста.
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 представлен возможный код приложения.