English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 문서는 Android에서 Gesture 손가락 인식을 구현하는 방법을 분석한 예제입니다. 여러분과 공유하여 참고하세요. 구체적으로 다음과 같습니다:
Android에서 이렇게 만들어진 것을 기쁘게 생각합니다。1.6의 sdk에서手势 인식 기능을 볼 수 있었지만, 이전에는 nds 게임에서처럼手势(정확하게는 펜手势)로 게임 캐릭터를 제어하는 방법을 어떻게 구현할 수 있을까 고민했습니다. 마침내 조금의 밝음을 보았습니다. 그러나手势를 펜手势처럼 자유롭게 게임 캐릭터를 제어할 수 있도록 하려면 여전히 많은 세부 사항을 처리해야 합니다。
Android1.6의 에뮬레이터에 Gestures Builder라는 프로그램이 предустановлен이 되어 있습니다. 이 프로그램은 자신의手势를 생성하는 데 사용됩니다(Gestures Builder의 소스 코드는 sdk의 samples에 있습니다. 관심이 있다면 확인해 보세요)。생성한手势는 다음에 저장됩니다:/sdcard/gestures에, 이 파일을 프로젝트에 복사합니다。/res/raw에, 여기서 이러한手势를 프로젝트 내에서 사용할 수 있습니다。gestures에 복사하여 이 파일을 프로젝트에 복사합니다。/res/raw에 있는手势는 읽기 전용입니다. 즉,手势를 수정하거나 추가할 수 없습니다. 수정을 실현하고자 한다면, sd 카드에 있는 gestures 파일을 직접 로드할 수 있습니다。
예제에서는 이렇게的手势를 생성했습니다:
제2단계: layout 내에 GestureOverlayView를 생성합니다. 이 투명한 뷰는 여기서手势를 그릴 수 있는 것이며, 다른 View 위에 겹칠 수 있습니다:
<?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>
제3단계: Gesture 로드:
mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures); if (!mLibrary.load()) { finish(); }
제4단계: 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); // 최소한 하나의 예측을 원합니다 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#w 이메일로 메일을 보내 주시기 바랍니다.3codebox.com(이메일을 보내는 경우 #을 @으로 변경하여 신고하시고, 관련 증거를 제공하시면, 사이트는 즉시 저작권 침해 내용을 삭제합니다.