这里介绍的只是一个简单的DEMO,根据官方的API还可以进行自定义手势的编写,具体的内容就以后遇到了再说,在本项目中也只起一个开后门的验证作用,毕竟一个没有后门的APP不是一个好APP。
画手势图:GestureOverlayView
画的时候存在几种状态,可利用GestureDetector中的类进行监听
1.onDown : 触碰
2.onFling:拖动
3.onLongPress:长按
4.onScroll:滚动
5.onSHowPress:按下,未移动未松动时
6.onSingleTagUp:轻击
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| gestureOverlayView = (GestureOverlayView) findViewById(R.id.gestureOverlayView);
gestureOverlayView.setGestureColor(Color.RED);
gestureOverlayView.setGestureStrokeWidth(10);
gestureOverlayView.addOnGesturePerformedListener new GestureOverlayView.OnGesturePerformedListener() { @Override public void onGesturePerformed(GestureOverlayView overlay, final Gesture gesture) { Bitmap bitmap = gesture.toBitmap(128, 128, 10, 0xffff0000); imageView.setImageBitmap(bitmap); GestureLibrary guestureLibrary = GestureLibraries.fromFile(Environment .getExternalStorageDirectory().getPath() + "/mygestures");
guestureLibrary.addGesture(gestureEditText.getText().toString(), gesture); guestureLibrary.save(); });
|
读取:
读取和写入的时候都会用到一个GestureLibrary手势库,这个库提供了一个方法,gestureLibrariLibrary.recognize(gesture)这个方法可以获得泛型Prediction的结果,Prediction中包含两个属性,一个是手势图的名称,一个是当前你所绘制的手势与目标手势图的相似度,我们可以通过比较它们之间的相似度来实现我们的逻辑运算。
同样的,我们也需要为它们定义一个监听器,这个监听器也会在手势完成也就是手指抬起来的时候触发。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| gestureOverlayView.addOnGesturePerformedListener(new GestureOverlayView.OnGesturePerformedListener() {
@Override public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) { ArrayList<Prediction> predictions = gestureLibrariLibrary.recognize(gesture);
for (Prediction prediction : predictions) { if (prediction.name.equals("test2")){ if (prediction.score > 6) { } } } } });
|