gpt4 book ai didi

java - Android 手势、单笔划和多笔划产生不一致的结果

转载 作者:行者123 更新时间:2023-11-29 22:24:16 29 4
gpt4 key购买 nike

+ - × /

我在按照此处的手势教程进行操作时遇到了一个非常奇怪的问题:http://developer.android.com/resources/articles/gestures.html .

在 Gesture Builder 中创建了 4 个独特的手势:+ - ×/

加法和乘法是多笔画。减法和除法是单笔画。

Activity 加载预先构建的 GestureLibrary (R.raw.gestures),将 OnGesturePerformedListener 添加到 GestureOverlayView,并在检测到并执行手势时以 onGesturePerformed() 结束。

XML 中的 Activity 布局

<android.gesture.GestureOverlayView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gestures"
android:layout_width="fill_parent"
android:layout_height="fill_parent"

android:gestureStrokeType="multiple"
android:eventsInterceptionEnabled="true"
android:orientation="vertical"
/>

位于onCreate()

    mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!mLibrary.load()) {
finish();
}

GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
gestures.addOnGesturePerformedListener(this);

位于 onGesturePerformed()

    ArrayList<Prediction> predictions = mLibrary.recognize(gesture);

// We want at least one prediction
if (predictions.size() > 0) {
Prediction prediction = predictions.get(0);

// We want at least some confidence in the result
if (prediction.score > 1.0) {
// Show the spell
Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
}
}

主要问题是无法正确识别预建手势。例如,如果水平手势后跟垂直(添加)手势,则永远不会执行 onGesturePerformed()。如果垂直手势后跟水平手势,则调用方法。这也是 GesturesListDemo 的行为方式 ( GesturesDemos.zip @ code.google.com )。

此外,预测的手势最终是错误的手势。加被识别为减;乘以除法;减为加。这是完全不一致的。

最后,添加和减去手势通常共享相似的 Prediction.score,这很奇怪,因为它们相差整个笔画。

很抱歉发了这么长的帖子——我想说的很透彻。任何建议将不胜感激,谢谢。

最佳答案

我意识到这是一个非常古老的问题,但尚未得到解答,这可能会对某些人有所帮助。我刚遇到类似的问题,我的解决方案是使用 gesture.getStrokesCount() 来区分单笔和多笔手势。

例子:

ArrayList<Prediction> predictions = mLibrary.recognize(gesture);

// We want at least one prediction
if (predictions.size() > 0) {
Prediction prediction = predictions.get(0);

// We want at least some confidence in the result
if (prediction.score > 1.0) {
if (gesture.getStrokesCount() > 1) {
// This is either add or multiply
}
else {
// This is either subtract or divide
}
}
}

关于java - Android 手势、单笔划和多笔划产生不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6380908/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com