首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多点触摸跨平台java应用程序(Windows、Mac和Linux(Ubuntu)(可能是Android))

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

Stack Overflow用户
提问于 2017-03-07 00:16:54
回答 2查看 1.2K关注 0票数 15

我试图在现有的跨平台java项目中添加多点触摸。我看过两种方法。还有其他几种方法,但它们似乎不是跨平台的,也不需要特殊的软件。

  1. JavaFx - windows和osx上的工作手势/触摸事件,但在Ubuntu16.04上不起作用。
  2. MT4J -看起来已经停止使用和/或不受支持了。

我对以上的结论可能是错误的,并且愿意在反馈良好的情况下再试一次。

要实现跨平台的多点触摸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,并认为它很有趣。

在下面发布了解决方案.

EN

回答 2

Stack Overflow用户

发布于 2017-03-15 13:47:26

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

反应本土化,科多瓦就是其中之一

我使用了React本机.It使用javascript代码,这些代码是根据平台进行编译的

React本机支持手势控制编程

代码语言:javascript
复制
https://facebook.github.io/react-native/docs/gesture-responder-system.html

您还可以将代码的react部分与您已经编写的应用程序的现有JAVA代码接口

代码语言:javascript
复制
https://facebook.github.io/react-native/docs/integration-with-existing-apps.html
票数 3
EN

Stack Overflow用户

发布于 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中使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42637978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档