多点触控跨平台java应用程序(Windows,Mac和Linux(Ubuntu)(可能是Android))

我试图在现有的跨平台java项目中添加多点触控。 我已经研究过2种方法。 还有其他几种方式,但它们似乎不是跨平台或需要特殊软件。

  1. JavaFx – 在Windows和osx上运行手势/ touchevent事件但在Ubuntu 16.04上无法运行。
  2. MT4J – 看起来已停产和/或不受支持。

我对上述结论的结论可能是错误的,我愿意在给予良好反馈的情况下再次尝试。

反正有没有实现跨平台的多点触控java应用程序? 似乎我可能需要编写一些本机代码并通过JNI添加它,这似乎是很多工作。 关于这种思路的任何想法? 反馈表示赞赏,谢谢。

延续1.0:

我一直在调查在Linux上使用JavaFX主要是因为现在使用JavaFX的唯一缺点是linux多点触控支持。 我发现JavaFx多点触控确实适用于嵌入式系统的Linux发行版(例如:Raspberry Pi,可能最诚实)。 我可以从中收集的是,如果可以为嵌入式系统编译OpenJFX,那么OpenJFX的嵌入式版本直接使用设备驱动程序来获取输入(/ dev / input /)而不是X11 / GTK。 由于桌面的Linux dists使用X11 / GTK输入桌面环境,JavaFx由于缺乏支持而无法获得这些事件。

我不想使用链接,但在这里

https://wiki.openjdk.java.net/display/OpenJFX/Building+the+OpenJFX+embedded+stack+for+Linux+desktop

上面的链接,至少在我看来是关于编译一个版本的OpenJFX for x86系统(应该工作x64),它使用嵌入式系统获取设备输入的方式。 我能够编译这个版本,但是当我运行它时,它似乎会崩溃桌面,有时它确实会让Java App失效。 当Java App保持运行时,触摸事件确实有效,但最终结果是不可接受的,因为它是不可预测的并且似乎使桌面管理器崩溃(此后需要重新启动桌面)。

延续1.1:

我研究了使用TUIO,但没有一个示例程序工作。 他们说你需要一个TUIO启用设备,它可能是我的设备不使用的特殊标准/ protocal。 几乎只是下载了TUIO演示并在触摸屏上运行它没有运气。

我还想过将xev附加到我的java应用程序窗口并将结果流式传输到一个文件,后者由java应用程序读取并解析为java事件。 这看起来非常h​​acky,我不确定它是否会起作用。 如果有人会说明这种工作的可能性,我可以尝试一下。 但在这一点上,这似乎是很多工作的方式。

延续1.2:

find这个https://bugs.openjdk.java.net/browse/JDK-8090954并认为它很有趣。

发布下面的解决方案。

最近出现了许多跨平台项目生成器

反应原生,Cordova是其中的一部分

我使用过React Native。它使用根据平台编译的javascript代码

React native支持Gesture Control编程

https://facebook.github.io/react-native/docs/gesture-responder-system.html 

您还可以将代码的反应部分与您已编写的应用程序的现有JAVA代码进行交互

 https://facebook.github.io/react-native/docs/integration-with-existing-apps.html 

解决方案是使用TUIO并滚动我们自己的Multi-Touch库。 诀窍是启动TUIOClient并运行TUIO服务器。 TUIOClient侦听给定端口,TUIO服务器将OS事件转发到TUIO客户端正在侦听的端口。

我使用mtdev2tuio服务器(输出桥)用于linux并将其与TUIO客户端一起运行。

示例流程:

1.)TUIOClient侦听端口x

2.)TUIOServer从os事件y向端口x转发TUIO事件

Linux的:

1.)新TUIOClient(3333)

2.)./ mtdev2tuio / dev / input / event5 osc.udp://127.0.0.1:3333

该解决方案并不理想,但它可以工作,并且应该支持任何设备上的多点触控,前提是有TUIO服务器(输出桥)运行。 另一个缺点是需要捕捉触摸并将其解释为手势。 还要注意,根据它的开发方式,决定了如何在不同的框架中使用它。 我们需要在Swing / JavaFX中使用。