Xem mẫu
- Trung tâm Tin học – ĐH KHTN
GESTURE
Bạn đã bao giờ nghe từ “Gesture” trong Android ? Có th ể nói nó là 1 trong nh ững ph ần
hay nhất của SmartPhone. “Gesture” dùng để nhận di ện các ch ử cái hay ký hi ệu mà
bạn viết trên màn hình (Dùng tay vẽ trên màn hình cảm ứng). Trong bài vi ết này mình
sẽ demo cách thức hoạt động của Gesture và tạo ra 1 ứng dụng nhận di ện ký t ự hoàn
chỉnh.
Đầu tiên các bạn phải vào Gesture Builder để xây dựng bộ thư vi ện cho Gesture (hay
nói nôm na là bạn định nghĩa cái bạn sẽ vẽ ra). Các bạn vào Virtual Devices (có đ ịnh
nghĩa SD Card), chọn menu và bấm vào . Bạn sẽ nhận được 1 màn hình đen
có 2 Button, bạn chọn Add gesture và tự định nghĩa :
Lập trình Android – http://laptrinhdidong.vn Page 1
- Trung tâm Tin học – ĐH KHTN
Khi đã hài lòng với Gesture của mình, bạn bấm vào button Done và s ẽ đ ược k ết qu ả
(bạn có thể định nghĩa nhìu Gesture cho 1 ký tự nh ư ký tự e c ủa mình):
Lập trình Android – http://laptrinhdidong.vn Page 2
- Trung tâm Tin học – ĐH KHTN
Tạo xong thư viện bạn tạo tiếp ứng dụng như sau:
1/ Tạo Project :
Project name: GestureRevealer
Build Target: Android 2.3.3
Application name: GestureRevealer
Package name: com.dac.GestureRevealer
Create Activity: MainActivity
Lập trình Android – http://laptrinhdidong.vn Page 3
- Trung tâm Tin học – ĐH KHTN
2/Trong file main.xml các bạn thiết kế như sau:
3/ Và trong file MainActivity.java các bạn code nh ư sau:
package com.dac.GestureRevealer
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.util.Log;
import android.widget.Toast;
public class MainActivity extends Activity implements
OnGesturePerformedListener {
private static final String TAG = "Gesture Revealer";
GestureLibrary gestureLib = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Lập trình Android – http://laptrinhdidong.vn Page 4
- Trung tâm Tin học – ĐH KHTN
gestureLib = GestureLibraries.fromFile("/sdcard/gestures");
if (!gestureLib.load()) {
Toast.makeText(this, "Could not load /sdcard/gestures",
Toast.LENGTH_SHORT).show();
finish();
}
Log.v(TAG, "Library features:");
Log.v(TAG, " Orientation style: " + gestureLib.getOrientationStyle());
Log.v(TAG, " Sequence type: " + gestureLib.getSequenceType());
for( String gestureName : gestureLib.getGestureEntries() ) {
Log.v(TAG, "For gesture " + gestureName);
int i = 1;
for( Gesture gesture : gestureLib.getGestures(gestureName) ) {
Log.v(TAG, " " + i + ": ID: " + gesture.getID());
Log.v(TAG, " " + i + ": Strokes count: " +
gesture.getStrokesCount());
Log.v(TAG, " " + i + ": Stroke length: " +
gesture.getLength());
i++;
}
}
GestureOverlayView gestureView = (GestureOverlayView)
findViewById(R.id.gestureOverlay);
gestureView.addOnGesturePerformedListener(this);
}
public void onGesturePerformed(GestureOverlayView view, Gesture gesture)
{
ArrayList predictions = gestureLib.recognize(gesture);
Log.v(TAG, "in onGesturePerformed");
if (predictions.size() > 0) {
Prediction prediction = (Prediction) predictions.get(0);
if (prediction.score > 1.0) {
Toast.makeText(this, prediction.name,
Toast.LENGTH_SHORT).show();
for(int i=0;i
- Trung tâm Tin học – ĐH KHTN
Mọi ý kiến đóng góp các bạn vui lòng gữi bài viết về http://forum.laptrinhdidong.vn . Rất
mong nhận được sự phản hồi từ các bạn
Lập trình Android – http://laptrinhdidong.vn Page 6
nguon tai.lieu . vn