4

背景:

我正在 Android 上制作一个小测试应用程序,它只在屏幕上显示应用程序可以感知到的所有手指触摸屏幕的所有数据。它与类似,但适用于所有触摸,而不仅仅是一个。Android 触摸事件包含大量数据(根据此文档),包括位置、方向、压力、大小和椭圆轴长度。

问题:

我的应用程序的每个 MotionEvent 都会收到针对每个指针索引 i 的 getSize(i)、getTouchMajor(i) 和 getTouchMinor(i) 的报告 0(零)。但它报告了合理的、非零的位置和压力​​值,所以有些东西工作正常。文档似乎暗示这意味着硬件不支持该信息,但我对此持怀疑态度,原因有两个。

  1. 我正在测试的设备是 Galaxy Tab II,我认为它非常漂亮。(我在网上搜索了是否可以找到各种 Android 设备支持 MotionEvents 的功能列表,但没有找到这样的列表。)
  2. 我使用 Java 方法 InputDevice.getMotionRanges() 来测试设备是否支持尺寸和主轴/次轴,这些结果表明设备确实支持这些轴(我得到的尺寸:0.0-1.0,主要/次要:0.0-1509.437每个)。

问题:

  1. 我是否认为 Galaxy Tab II 支持 MotionEvent 的大小和长轴/短轴特性是正确的,如果是这样,为什么我不能从实际的 MotionEvents 中获取这些数据?(我的代码与上面链接的代码非常相似。)
  2. 如果此平板电脑实际上不支持这些轴,您能否推荐我可以在上面执行此操作的 Android 平板电脑,它会给我 MotionEvent 大小和椭圆轴长度?

提前感谢您提供的任何帮助!

编辑:同事在 Galaxy Tab 上测试应用程序我得到了所有数据,没有丢失。设备之间是否存在一些配置/设置差异?Galaxy Tab 会从 I 降级到 II 似乎很奇怪……

4

1 回答 1

1

我在一个类似的问题上回答了这个问题。 onTouch MoitonEvent getTouchMinor 和 getTouchMajor 总是得到完全相同的数字结果,为什么?

在我们的发现中,我们没有发现任何设备可以为椭圆提供不同的主要和次要长度,或者可以提供这种椭圆的方向。

我们测试的大多数设备只给出了一个我们认为是对角线的值。

于 2014-02-27T10:17:25.850 回答