多点触控跨平台Java应用程序(Windows,Mac和Linux(Ubuntu)(可能是Android))
我正在尝试将多点触控添加到现有的跨平台Java项目中。我已经研究了2种方式。还有其他几种方法,但它们似乎不是跨平台的,或者需要特殊的软件。
- JavaFx - 在Windows和osx上工作手势/触摸事件,但在Ubuntu 16.04上不起作用。
- MT4J - 看起来已停产和/或不受支持。
我对上述结论可能是错误的,如果得到良好的反馈,我愿意再次尝试。
有没有实现跨平台多点触控Java应用程序?似乎我可能需要编写一些本机代码并通过JNI添加它,这似乎需要做很多工作。关于这个思路的任何想法?感谢反馈,谢谢。
延续 1.0:
我一直在研究在linux上使用JavaFX,主要是因为现在使用JavaFX的唯一缺点是linux多点触控支持。我发现JavaFx多点触控确实适用于嵌入式系统的Linux发行版(例如:Raspberry Pi,可能是大多数诚实的)。我能从中收集到的是,如果OpenJFX可以为嵌入式系统编译,那么OpenJFX的嵌入式版本直接使用设备驱动程序来获取输入(/dev/input/)而不是X11/ GTK。由于桌面的Linux dist使用X11 / GTK作为输入到桌面环境中,因此由于缺乏支持,JavaFx无法获得这些事件。
我不想使用链接,但在这里它是
https://wiki.openjdk.java.net/display/OpenJFX/Building+the+OpenJFX+embedded+stack+for+Linux+desktop
至少在我看来,上面的链接是关于为x86系统编译OpenJFX的一个版本(应该工作x64),它使用嵌入式系统获取设备输入的方式。我能够编译这个版本,但是当我运行时,它似乎会使桌面崩溃,有时它确实会使Java应用程序保持打开状态。当Java应用程序保持运行时,触摸事件确实有效,但这种最终结果是不可接受的,因为它是不可预测的,并且似乎会使桌面管理器崩溃(在此之后需要重新启动桌面)。
续篇 1.1:
我考虑使用TUIO,但没有一个示例程序有效。他们说你需要一个TUIO启用设备,这可能是我的设备不使用的特殊标准/原型。几乎只是下载了TUIO演示并在触摸屏上运行它,没有运气。
我还考虑过将 xev 附加到我的 java 应用程序窗口,并将结果流式传输到一个文件,以便 java 应用程序读取该文件并将其解析为 java 事件。这似乎很笨拙,我不确定它是否有效。如果有人愿意提出这项工作的可能性,我可能会尝试一下。但在这一点上,这似乎是很多工作的方式。
续篇 1.2:
发现这个 https://bugs.openjdk.java.net/browse/JDK-8090954,觉得很有趣。
在下面发布了解决方案。