Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android多笔划手势不工作_Android_Stroke - Fatal编程技术网

Android多笔划手势不工作

Android多笔划手势不工作,android,stroke,Android,Stroke,我修改了一个现有的应用程序,GestureBuilder,以接受多个笔划,从而接受字母A、D、F等等。我创建了一个简单的应用程序,可以识别字母是否正确。我的问题是: 1.我已使用gestureBuilder成功地将多笔画字母记录在名为“手势”的文件中。 2.我的应用程序不接受多笔划手势。但我已将fadeoffset设置为1000,并将gesturestroketype设置为multiple。我不知道为什么会发生这种情况。当我输入下一个xtroke以写大写字母A时,我上一个笔划将消失。我无法写多笔

我修改了一个现有的应用程序,GestureBuilder,以接受多个笔划,从而接受字母A、D、F等等。我创建了一个简单的应用程序,可以识别字母是否正确。我的问题是:

1.我已使用gestureBuilder成功地将多笔画字母记录在名为“手势”的文件中。 2.我的应用程序不接受多笔划手势。但我已将fadeoffset设置为1000,并将gesturestroketype设置为multiple。我不知道为什么会发生这种情况。当我输入下一个xtroke以写大写字母A时,我上一个笔划将消失。我无法写多笔划字母/符号

代码:

xml文件:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"

     >

        <android.gesture.GestureOverlayView
        android:id="@+id/gestures_overlay"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1.0"
        android:fadeOffset="5000"
        android:eventsInterceptionEnabled="true"

        android:gestureStrokeType="multiple" />



        </LinearLayout>

java文件:

package com.example.gesture_letter;

         import java.util.ArrayList;

          import android.os.Bundle;
         import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGestureListener;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.gesture.Prediction;
import android.graphics.Color;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity implements  OnGesturePerformedListener {
    GestureLibrary mLibrary;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        GestureOverlayView gestureoverlayview=new GestureOverlayView(this);

        View inflate=getLayoutInflater().inflate(R.layout.activity_main,null);
        gestureoverlayview.setGestureColor(Color.rgb(0, 255, 0));
        gestureoverlayview.setGestureVisible(true);
        gestureoverlayview.setUncertainGestureColor(Color.rgb(0,0,255));

        gestureoverlayview.addView(inflate);
        gestureoverlayview.addOnGesturePerformedListener(this);
        mLibrary=GestureLibraries.fromRawResource(this,R.raw.gestures);
        if(!mLibrary.load())
        {
            Log.i("debug","FAILED");

        }
        else
        {
            Log.i("debug","LOADED");
        }

        Log.i("debug","OnCreate");
        setContentView(gestureoverlayview);


    }

    @Override
    public void onGesturePerformed(GestureOverlayView arg0, Gesture arg1) {
        // TODO Auto-generated method stub

        ArrayList<Prediction> predictions=mLibrary.recognize(arg1);
        if(predictions.size()>0)
        {
            Prediction prediction=predictions.get(0);
            if(prediction.score>1.0)
            {
                String s=prediction.name;


                Toast.makeText(getApplicationContext(), s,Toast.LENGTH_LONG).show();
            }
            else
                if(prediction.score<1.0)
                {
                    Toast.makeText(getApplicationContext(), "None",Toast.LENGTH_LONG).show();
                }
                }

        }
    }
package com.example.signature\u字母;
导入java.util.ArrayList;
导入android.os.Bundle;
导入android.app.Activity;
导入android.signature.signature;
导入android.signature.gesturebraries;
导入android.signature.gesturebrary;
导入android.signature.GestureOverlayView;
导入android.signature.GestureOverlayView.OnEstureListener;
导入android.signature.GestureOverlayView.OnEsturePerformedListener;
导入android.signate.Prediction;
导入android.graphics.Color;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MotionEvent;
导入android.view.view;
导入android.widget.Toast;
公共类MainActivity扩展活动实现OnTesturePerformedListener{
手势图书馆;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GestureOverlayView GestureOverlayView=新的GestureOverlayView(此);
视图充气=GetLayoutFlater().inflate(R.layout.activity_main,null);
gestureoveryview.setGestureColor(Color.rgb(0,255,0));
gestureoverlayview.setGestureVisible(true);
gestureoverlayview.SetUncertiveGestureColor(Color.rgb(0,0255));
手势OverlayView.addView(充气);
gestureoverlayview.AddOnTesturePerformedListener(此);
mLibrary=GestureLibraries.fromRawResource(this,R.raw.bigests);
如果(!mLibrary.load())
{
Log.i(“调试”、“失败”);
}
其他的
{
Log.i(“调试”、“加载”);
}
Log.i(“debug”、“OnCreate”);
setContentView(gestureoverlayview);
}
@凌驾
已执行检测的公共无效(手势覆盖视图arg0,手势arg1){
//TODO自动生成的方法存根
ArrayList预测=mLibrary.recognize(arg1);
如果(预测值.size()>0)
{
预测=预测。获取(0);
如果(预测得分>1.0)
{
字符串s=prediction.name;
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG.show();
}
其他的

如果(prediction.score我不知道为什么,
android:GestureStrokeType=“multiple”
不起作用。我突然想到从java方面尝试一下。我设置:

gestureoverlayview.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_MULTIPLE);
gestureoverlayview is an object of GestureOverlayView(you can name it anything)
(在新手的main_activity.java文件中) 然后你会发现它是有效的


我认为这是一个bug,我不确定。我花了数周的时间在这上面徘徊:(

问题是你创建了一个新的GestureOverlayView:

GestureOverlayView GestureOverlayView=新的GestureOverlayView(此)


您应该使用findViewById(R.id.signature_overlay)调用xml中定义的视图;

此外,任何人都必须在xml中添加一个
fadeOffset=“3600000”
。它不必是一个小时(3600000),但要在笔划之间留出一些大的时间。