【问题标题】:Android finger detection - Orientation and ellipseAndroid 手指检测 - 方向和椭圆
【发布时间】:2014-03-29 18:59:11
【问题描述】:

我一直在寻找一种在使用移动触摸设备时检测手指方向以及以椭圆形式简化触摸区域的方法。我选择 Android 而不是 iOS,因为我在 Android 参考资料中找到了三个有用的方法(getTouchMajor()getTouchMinor()getOrientation()MotionEvent class。 但是我尝试在我的应用程序中实现这三种方法,遗憾的是它们没有返回想要的值。无论如何,方向都保持在 0,而 getTouchMajor 和 getTouchMinor 每次都完全相同。

所以我的问题是:我做错了什么还是这些方法还没有实现?

(我在几种不同的设备上尝试过这些功能,包括:Nexus 5、Nexus 7 和 HTC One)

【问题讨论】:

  • 撞!非常令人不安的是,这些方法是在第 9 级时引入 API 的,现在是第 19 级,大约在 3 年前,它变成了 10 级。并且没有对支持这些功能的硬件提出任何要求,这让开发人员质疑媒体中的可能性。
  • 自从我使用这些已经大约两年了,但它们过去在许多设备上肯定对我有用。您是否也尝试过使用getHistoricalOrientationgetHistoricalTouchMajor 等。可能也值得尝试getSizegetHistoricalSize
  • Dane,你还记得你用过哪些设备吗?你得到正确的值了吗?自从我写了这篇文章后,我设法拿到了三星 Galaxy Tab 3,它实际上为getTouchMajorgetTouchMinor 提供了不同的数字。但不幸的是,major 在任何时候都只是minor 乘以三。
  • 不幸的是,我不记得这些设备了。那时,我工作的地方有数百种不同的 Android 设备。我刚刚在我的 Moto X 上试了一下,得到了反映触摸大小的主要/次要数字。但主要/次要总是相等的。方向总是 0。所以这似乎是一个常见的场景。我会想象带有手写笔的东西(比如 Galaxy Note)会返回更好的值。
  • 我使用的是 2014 年的 Galaxy Note Pro 12.2,它仍然提供方向 -pi 始终和主要 = 3 * 次要,它似乎只是在大约 0.5 的离散步骤中发生变化,它们应该删除如果在 API 的 10 个版本之后没有制造商提供正确的信息,则来自 API。

标签: android motionevent


【解决方案1】:

当我们一起工作时,我知道你知道这个答案,但我只是想把它放出来,以便 Stackoverflow 的其他用户也能拥有它。

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

我们最初测试过:Samsung Galaxy S2、HTC One、Nexus 5(LG)和 Nexus 7(Asus)、Samsung Galaxy Tap 3。

与其他三星 Galaxy Tap 3 不同,它为 getTouchMajor() 和 getTouchMinor() 提供了不同的值,但这种关系可以看出 getTouchMajor() = getTouchMinor() * 3,并且 getOrientation() 始终为 0,因为与所有其他设备。

大约 2 个月后,我们发现 Google Nexus 10 可以在开发者设置下激活 Input: Pointer Location 时显示带有方向线的椭圆。 p>

最初的结论是大多数设备不支持getTouchMajor()、getTouchMinor()。或 getOrientation(),这可能是电容式触摸屏的限制。 但是看到 Nexus 10,以及对椭圆和方向的跟踪,为新的交互设计带来了希望。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-03
    • 2014-12-23
    • 2020-08-11
    • 2017-07-01
    • 1970-01-01
    • 2015-07-15
    • 2015-01-12
    • 2014-05-05
    相关资源
    最近更新 更多