【问题标题】:How to get the all the raw touch points at a particular instant for a tap?如何在特定时刻获取所有原始接触点以进行点击?
【发布时间】:2013-08-20 21:31:58
【问题描述】:

点击一次触摸屏时,由于手指较胖,手指会触摸屏幕上的多个 x,y 位置。但是 android 一次只给我一个 x,y 位置(例如,如果我使用 adb shell getevent,它一次只给我一个 x-y 坐标。当然,对于一个点击它给出多个 x,y 位置,因为点击持续一段时间,如果 x-y 略有变化,它会给出该时间的每一部分的 x-y 位置。)在每个瞬间,我正在触摸超过 50-100 个像素 - 大概 android 使用一些算法将所有触摸信号减少到一个 x-y 位置。有没有办法可以在我同时触摸的每个像素上获得多个原始触摸信号?我有一个 root 设备,如果需要,我愿意深入研究 android 源代码。

【问题讨论】:

    标签: android touch android-source


    【解决方案1】:

    Android 通过多个 MotionEvent API 将总触摸区域报告为椭圆。

    触控椭圆的长轴:MotionEvent.getTouchMajor()

    触摸椭圆的短轴:MotionEvent.getTouchMinor()

    触摸椭圆的方向:MotionEvent.getOrientation()

    【讨论】:

    • 您能确认这些方法有效吗? stackoverflow.com/questions/22050028/…stackoverflow.com/questions/22032486/… 报告这些方法的问题
    • 自从我使用这些已经大约两年了,但它们过去在许多设备上肯定对我有用。您是否也尝试过使用getHistoricalOrientationgetHistoricalTouchMajor 等? getSizegetHistoricalSize 可能也值得尝试。
    • 有趣的是,我们在历史方法上遇到了编码错误。但我想了解更多细节:您是说您在历史方法或答案中提到的方法上取得了成功?您能否详细说明您在哪些设备上取得了想要的结果? (详细说明想要的结果也将非常感谢):)
    • 不幸的是,我不记得这些设备了。我当时工作的地方有数百种不同的 Android 设备。我在我的 Moto X 上试了一下,得到了反映触摸大小的主要/次要数字。但主要/次要总是平等的。方向总是 0。所以这似乎是一个常见的场景。我会想象带有手写笔的东西(如 Galaxy Note)会返回更好的值。您不应该在历史方法上遇到编码错误。你有没有先检查 MotionEvent.getHistorySize() ?同时查看当前事件和历史事件通常是一个好主意。
    猜你喜欢
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多