Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 10.04.2014 | Доступ: свободный | Студентов: 6824 / 1221 | Длительность: 14:18:00
Специальности: Программист
Самостоятельная работа 6:

Принципы работы c жестами вводимыми пользователями

11.4 Заключение

В качестве практического задания предлагаем реализовать жестами ввод чисел в приложении "Угадайка", разработанном в лабораторной работе второй темы. Создать жесты "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" для ввода цифр и жест "S" для остановки ввода числа. В приложение добавить распознавание этих жестов, преобразование их в число и сравнение полученного числа с загаданным.

Еще варианты для самостоятельной работы:

  1. разработать простой калькулятор с жестовым вводом чисел и операций;
  2. разработать блокнотик для заметок с рукописным вводом текста.
package com.example.lab5_2_gestures;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.gesture.Prediction;
import android.view.Menu;
import android.widget.TextView;

public class Gestures extends Activity implements OnGesturePerformedListener{
  
  GestureLibrary gLib;
  GestureOverlayView gestures;
  TextView tvOut;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gestures);
    tvOut=(TextView)findViewById(R.id.textView1);
        //Загрузка жестов (gestures) из res/raw/gestures
        gLib = GestureLibraries.fromRawResource(this, R.raw.gestures); 
        if (!gLib.load()) {
          //Если жесты не загружены, то выход из приложения
            finish();
        }

       gestures = (GestureOverlayView) findViewById(R.id.gestureOverlayView1);
       gestures.addOnGesturePerformedListener(this);
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.gestures, menu);
    return true;
  }
  
  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. Распознавание жестов загруженных в файл res/raw/gestures
Марат Нуриджанян
Марат Нуриджанян

Пример: Скачать среду можно с сайта для разработчиков Android (http://developer.android.com/sdk/index.html).

Там скачать можно только Android Studio

Владимир Каункин
Владимир Каункин

В самостоятельной работе 2 в примере решения задания некорректно загадывается число (в двух местах), выбирая случайное целое число из диапазона [0, 99] вместо [1, 100], как того требует условие. Кроме того, загадывание числа всё таки лучше вынести в отдельный метод, как мне кажется.