English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
この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(メールを送信する際には、#を@に変更してください。届出を行い、関連する証拠を提供してください。一旦確認がついたら、本サイトは即座に侵害が疑われる内容を削除します。)