【问题标题】:onTouch MotionEvent getTouchMinor and getTouchMajor always the exact same number result, why?onTouch MotionEvent getTouchMinor 和 getTouchMajor 总是完全相同的数字结果,为什么?
【发布时间】:2014-02-26 05:21:03
【问题描述】:

查看文档,触摸主要和触摸次要是触摸事件的椭圆轴。一个是针对触摸区域最长测量的长度,另一个是针对触摸事件的最短测量。就像椭圆的测量一样。

但是,我在几个安卓平板电脑上测试了 getTouchMajor 和 getTouchMinor 方法的代码。并通过将手指放下来做到这一点,以便触摸屏幕的表面积在一个方向上会更长,因此它不会是一个圆圈。这样最大和最小数字不应该相同。

问题在于,无论在 on touch down 事件中触摸屏幕的区域是什么形状,两者始终是完全相同的浮点数。实现这一点的唯一方法是触摸屏幕的手指皮肤区域是一个圆圈。

所以基本上,我拥有的两个安卓平板电脑将触摸的触摸事件区域视为圆形区域,有时更大或更小,但总是使其成为圆形,是否有任何设备可以为您提供更准确的形状?

我从这些函数中获得的唯一有用信息是触摸区域的一般大小。

为什么两个数字一样。这不是正确的结果吗?

if(event.getAction() == MotionEvent.ACTION_DOWN){
        float x = event.getX();
        float y = event.getY();
        float touchMajor = event.getTouchMajor(); // major axis of ellipse touch area
        float touchMinor = event.getTouchMinor(); // minor axis of ellipse touch area 

      //  Toast.makeText(context, "x " +  x , Toast.LENGTH_SHORT).show();
      // Toast.makeText(context, "y " +  y , Toast.LENGTH_SHORT).show();
        Toast.makeText(context, "touchMajor " + touchMajor , Toast.LENGTH_SHORT).show();
        Toast.makeText(context, "touchMinor " +  touchMinor , Toast.LENGTH_SHORT).show();

【问题讨论】:

    标签: android touch ontouchlistener


    【解决方案1】:

    我和我的项目组对同一件事感兴趣(我们发布了这个:Android finger detection - Orientation and ellipse

    我们发现提示性的 cmets 可能是大多数设备的触摸屏驱动程序不向系统提供此数据。

    我们现在测试了: 三星 Galaxy S2、HTC One、Nexus 5(LG 出品)和 Nexus 7(华硕出品)、三星 Galaxy Tap3

    当我们测试三星 Galaxy Tap 3 时,我们最终得到了 getTouchMajor() 和 getTouchMinor() 的不同值,但喜悦只是短暂的,因为我们发现 getTouchMajor() = getTouchMinor() * 3,在任何情况下,并且 getOrientation() 始终为 0,与所有其他设备一样。

    我们的结论是大部分设备都不支持getTouchMajor()、getTouchMinor()。或获取方向()。 这很可能是电容式触摸屏的限制。

    基于图像处理的基于 FTIR(受挫全内反射)或 DI(漫射照明)的触摸表面的方法已证明可以提供更丰富的触摸交互数据。但据我们所知,这些方法都不适用于移动技术,也没有手持设备使用其中任何一种。

    看到这些指标在手持设备上的可能性无法实现,我们感到非常沮丧。

    编辑: 我最近通过我的同学发现,当您在开发人员设置下激活 Input>Pointer Location 时,三星生产的 Google Nexus 10 会显示一个带有方向线的椭圆。

    这表明某些设备确实提供 getTouchMinor 和 getTouchMajor 以及方向。 (或相同功能的历史版本)。 我没有机会自己为设备编写任何代码,但这似乎是合理的。

    【讨论】:

    • 幸好我不是唯一注意到这一点的人。从现在开始,我将假设屏幕上的手指接触区域是一个完美的圆形,只会改变它的大小。椭圆形触摸接触区域的可能性是未来,如果硬件可用,这将是可能的。将来有这个选项总比没有要好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多