[英]Multi-touch cross platform java application (Windows, Mac, and Linux(Ubuntu)(possibly Android))
我试图为现有的跨平台java项目添加多点触控。 我已经研究过2种方法。 还有其他几种方式,但它们似乎不是跨平台或需要特殊软件。
我对上述结论的结论可能是错误的,并愿意在给予良好反馈的情况下再次尝试。
反正有没有实现跨平台的多点触控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应用程序处于运行状态时,触摸事件确实有效,但最终结果是不可接受的,因为它是不可预测的并且似乎使桌面管理器崩溃(此后需要重新启动桌面)。
延续1.1:
我研究了使用TUIO,但没有一个示例程序工作。 他们说你需要一个TUIO启用设备,它可能是我的设备不使用的特殊标准/ protocal。 几乎只是下载了TUIO演示并在触摸屏上运行它没有运气。
我还想过将xev附加到我的java应用程序窗口并将结果流式传输到一个文件,后者由java应用程序读取并解析为java事件。 这看起来非常hacky,我不确定它是否会起作用。 如果有人会说明这种工作的可能性,我可以尝试一下。 但在这一点上,似乎有很多工作要做。
延续1.2:
发现这个https://bugs.openjdk.java.net/browse/JDK-8090954并认为它很有趣。
发布下面的解决方案。
最近出现了许多跨平台项目生成器
反应原生,科尔多瓦是其中的一部分
我使用过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中使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.