English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

AndroidでGestureジェスチャー認識の使用法の分析

このAndroidでGestureジェスチャー認識の使い方の例を分析しています。皆さんに参考にしていただくために共有します。具体的には以下の通りです:

很高兴能在Android1Android6とてもAndroidで

のSDKで、手勢認識機能を見つけました。以前は、Androidでndsゲームのように手勢(正確には筆勢)でゲームキャラクターを操作する方法について考えていました。今や少し光が見えましたが、手勢が筆勢のように自由にゲームキャラクターを操作できるようにするには、まだ多くの詳細な問題を解決する必要があります。1Android6./のシミュレータにGestures Builderというアプリがプリインストールされています。このアプリは、独自の手勢を作成するために使用されます(Gestures Builderのソースコードはsdkのsamplesにあります。興味がある場合はご覧ください)。作成された手勢は、以下に保存されます/sdcard/res/raw内、あなたのプロジェクト内でこれらの手勢を使用できます。gesturesにコピーして、このファイルをプロジェクトにコピーします。/res/raw内の手勢は読み取り専用です。これは、手勢を変更したり追加したりできないことを意味します。変更または追加を実現するには、sdカード内のgesturesファイルを直接読み込むことができます。

例では、このような手勢を作成しました:

第二歩:layout内にGestureOverlayViewを作成し、この透明なビューは、その上に手勢を描くために使用されます。他のビューの上に重ねることができます:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
<TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello"
  />
<android.gesture.GestureOverlayView
  android:id="@"+id/gestures"
  android:layout_width="fill_parent"
  android:layout_height="0dip"
  android:layout_weight="1.0"
  />
</LinearLayout>

第三步:载入Gesture:

mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!mLibrary.load()) {
  finish();
}

第四步:增加响应函数OnGesturePerformedListener:

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

以上四步就可以实现简单的Gesture识别原型了:

プログラムの実行結果は以下の通りです、a文字を書いてプログラムが認識し、aのトーストを出力します:

以下は完全なコードです:

package com.ray.test;
import java.util.ArrayList;
import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.Prediction;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.os.Bundle;
import android.widget.Toast;
public class TestGesture extends Activity implements OnGesturePerformedListener{
  GestureLibrary mLibrary;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
    gestures.addOnGesturePerformedListener(this);
    mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
    if (!mLibrary.load()) {
      finish();
    }
  }
  @Override
  public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
    ArrayList predictions = mLibrary.recognize(gesture);
    // 少なくとも1つの予測が必要です
    if (predictions.size() > 0) {
      Prediction prediction = (Prediction) predictions.get(0);
      // 結果に対して少なくとも少しの確信が必要です
      if (prediction.score > 1.0) {
        // スペルを表示する
        Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
      }
    }
  }
}

Androidに関するさらに詳しい内容に興味を持つ読者は、以下の本サイトの特集をチェックしてください:《Androidプログラミングにおけるactivity操作の技術的まとめ》、《AndroidビューView技術的まとめ》、《Android SQLiteデータベース操作技術的まとめ》、《Android JSON形式データ操作技術的まとめ》、《Androidデータベース操作技術的まとめ》、《Androidファイル操作技術の総合》、《Androidプログラミング開発におけるSDカード操作方法の総合》、《Android開発入門と進階教程》、《Androidリソース操作技術の総合》および《Androidコントロールの使用方法のまとめ》

この記事で述べたことが皆様のAndroidプログラム設計に役立つことを願っています。

声明:本文の内容はインターネットから取得しており、著作権者は所有者であり、インターネットユーザーが自発的に貢献し、自己でアップロードしたものであり、本サイトは所有権を持ちません。また、人工的な編集は行われておらず、関連する法的責任も負いません。著作権侵害が疑われる内容がある場合は、メールを送信していただければ幸いです:notice#oldtoolbag.com(メールを送信する際には、#を@に変更してください。届出を行い、関連する証拠を提供してください。一旦確認がついたら、本サイトは即座に侵害が疑われる内容を削除します。)

おすすめ