我试图在现有的跨平台java项目中添加多点触摸。我看过两种方法。还有其他几种方法,但它们似乎不是跨平台的,也不需要特殊的软件。
我对以上的结论可能是错误的,并且愿意在反馈良好的情况下再试一次。
要实现跨平台的多点触摸java应用程序吗?似乎我需要编写一些本地代码并通过JNI添加它,这似乎是一项很大的工作。这条思路有什么想法吗?非常感谢您的反馈,谢谢。
延续1.0:
我一直在研究在linux上使用JavaFX,主要是因为现在使用JavaFX的唯一缺点是linux多点触摸支持。我所发现的是,JavaFx多点触摸确实可以在用于嵌入式系统的Linux发行版上工作(例如: Raspberry,说实话)。我从中可以收集到的是,如果可以为嵌入式系统编译OpenJFX,那么OpenJFX的嵌入式版本将直接使用设备驱动程序来获取输入(/dev/ get /),而不是X11/GTK。由于LinuxDistsfor桌面使用X11/GTK作为桌面环境的输入,因此由于缺乏支持,JavaFx无法获得这些事件。
我不想使用链接,但它在这里
https://wiki.openjdk.java.net/display/OpenJFX/Building+the+OpenJFX+embedded+stack+for+Linux+desktop
至少在我看来,上面的链接是关于编译OpenJFX for x86系统的一个版本(应该工作x64),该版本使用嵌入式系统获取设备输入的方式。我能够编译这个版本,但是当我运行它时,它似乎会使桌面崩溃,有时它确实会使Java应用程序关闭。当Java应用程序离开时,运行触摸事件是可行的,但是这个最终结果是不可接受的,因为它是不可预测的,并且似乎会使桌面管理器崩溃(需要在这之后重新启动桌面)。
延续1.1:
我研究过使用TUIO,但是没有一个示例程序有效。他们说,您需要一个TUIO启用设备,这可能是一个特殊的标准/协议,我的设备不使用。几乎只是下载了TUIO演示,并在触摸屏上运行,没有运气。
我还考虑将xev附加到我的java应用程序窗口,并将结果流到一个文件中,由java应用程序读取该文件,并将其解析为java事件。这似乎相当麻烦,而且我不确定它是否会起作用。如果有人能说出这种工作的可能性,我可以试试。但在这一点上,这似乎是许多工作的方式。
延续1.2:
找到了这个https://bugs.openjdk.java.net/browse/JDK-8090954,并认为它很有趣。
在下面发布了解决方案.
发布于 2017-03-15 13:47:26
最近出现了许多跨平台的项目生成器。
反应本土化,科多瓦就是其中之一
我使用了React本机.It使用javascript代码,这些代码是根据平台进行编译的
React本机支持手势控制编程
https://facebook.github.io/react-native/docs/gesture-responder-system.html您还可以将代码的react部分与您已经编写的应用程序的现有JAVA代码接口
https://facebook.github.io/react-native/docs/integration-with-existing-apps.html发布于 2017-03-29 22:05:11
解决方案是使用TUIO并滚动我们自己的多点触摸库。诀窍是启动TUIOClient并运行TUIO服务器。TUIOClient监听给定端口,TUIO服务器将OS事件转发给TUIO客户端侦听的端口。
我为linux使用了mtdev2tuio服务器(输出桥),并沿着TUIO客户端运行它。
示例流:
1.)TUIOClient监听端口x
2.)从os事件y将TUIO事件转发到端口x的TUIOServer
Linux:
1.)新TUIOClient(3333)
( 2.) ./mtdev2tuio /dev/input/event5 sw.udp://127.0.0.1:3333
这个解决方案并不理想,但它可以工作,并且应该支持任何设备上的多点触摸,只要有一个TUIO服务器(输出桥)正在运行。另一个缺点是需要捕捉触摸并将其解释为手势。还要注意,取决于它是如何开发的,它决定了如何在不同的框架中使用它。我们的需要在Swing/JavaFX中使用。
https://stackoverflow.com/questions/42637978
复制相似问题