Java getTouchMajor()不精确:我无法获得触摸区域长度的实际值

Java getTouchMajor()不精确:我无法获得触摸区域长度的实际值,java,android,Java,Android,我想在android手机上用手指触摸屏幕时显示触摸区域的长度和宽度。在尝试getTouchMajor方法后,它只能为我提供[55、99、123、187、219、250等]中的离散数字,而不是触摸区域变化时的连续变化 相反,方法getX和getY非常敏感,可以提供连续的触摸位置值。但是getTouchMajor和getTouchMinor不能这么做 @Override public boolean onTouchEvent(MotionEvent event) { float touchX

我想在android手机上用手指触摸屏幕时显示触摸区域的长度和宽度。在尝试getTouchMajor方法后,它只能为我提供[55、99、123、187、219、250等]中的离散数字,而不是触摸区域变化时的连续变化

相反,方法getX和getY非常敏感,可以提供连续的触摸位置值。但是getTouchMajor和getTouchMinor不能这么做

@Override
public boolean onTouchEvent(MotionEvent event) {
    float touchX = event.getX();
    float touchY = event.getY();
    float touchWidth = event.getTouchMajor();
    float touchLength = event.getTouchMinor();


    TextView textX = findViewById(R.id.touch_x);
    TextView textY = findViewById(R.id.touch_y);
    TextView textWidth = findViewById(R.id.touch_width);
    TextView textLength = findViewById(R.id.touch_length);


    textX.setText(Float.toString(touchX));
    textY.setText(Float.toString(touchY));
    textWidth.setText(Float.toString(touchWidth));
    textLength.setText(Float.toString(touchLength));

    return super.onTouchEvent(event);
}
当我触摸屏幕时,我希望看到手机上触摸宽度和触摸长度的值不断变化


我遇到的另一个小问题是:输出的长度和宽度相同,但我认为它们应该不同,因为文档中说触摸区域是eclipse。

问题是我使用的硬件不完全支持这些方法。顺便说一句,我从卡米拉的链接中得到了灵感:

然后我在4台安卓设备上测试了我的程序:Nexus5、GalaxyNote8、GalaxyTabS和Pixel3XL

结果:

Galaxy Note 8、Galaxy Tab S和Pixel 3 XL可以区分长轴和短轴

所有4个设备都无法通过getOrientation方法返回有意义的值

Galaxy Note 8的精度最好,其次是Galaxy Tab S和Pixel 3 XL,Nexus 5的精度较差