2017-03-07 31 views
14

既存のクロスプラットフォームJavaプロジェクトにマルチタッチを追加しようとしていますか?私は2つの方法を見てきました。他にもいくつかの方法がありましたが、クロスプラットフォームではなく、特別なソフトウェアが必要でした。マルチタッチクロスプラットフォームJavaアプリケーション(Windows、Mac、Linux(Ubuntu)(おそらくAndroid))

  1. JavaFx - ウインドウズとosxでは動作していますが、Ubuntuでは機能していません16.04。
  2. MT4J - 廃止またはサポートされていないようです。

上記の私の結論は間違っている可能性があり、良いフィードバックを与えて再度それらを試してみるのは喜んでいます。

クロスプラットフォームのマルチタッチJavaアプリケーションを実現するにはどうしてですか?いくつかのネイティブコードを記述し、JNIを使​​って追加する必要があるかもしれないと思われますが、これは多くの作業のようです。この考え方の考え方は?フィードバックは、感謝、ありがとうございます。

継続1.0:私は今のJavaFXを使用するための唯一の欠点は、Linuxのマルチタッチサポートである主な理由はLinux上でのJavaFXを使って調査し続けている

。私が知ったことは、JavaFxのマルチタッチは組み込みシステム向けのLinuxディストリビューション(例えば、おそらく最も正直なところであるRaspberry Pi)で動作するということです。 OpenJFXを組み込みシステム用にコンパイルできる場合、OpenJFXの組み込みバージョンでは、デバイスドライバを直接使用してX11/GTKの代わりに入力(/ dev/input /)を取得します。デスクトップのLinuxディストリビューションはX11/GTKを使用してデスクトップ環境に入力するため、JavaFxはサポートが不足しているためこれらのイベントを取得できません。

私はリンクを使用したくないけど、ここでは、上記のリンク

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

で、(x86システム用OpenJFXのバージョンをコンパイルする程度であることを、で、少なくとも私には思えますx64を動作させるはずです)。これは、デバイス入力を取得する組み込みシステムの方法を使用します。私はこのバージョンをコンパイルすることができますが、実行するとデスクトップがクラッシュするように見えますが、Java Appを残すこともあります。 Javaアプリケーションが実行されたままになっているタッチイベントは機能しますが、この最終結果は予測できず、デスクトップマネージャーをクラッシュさせるようです(この後にデスクトップを再起動する必要があります)。

継続1.1:

私はTUIOを使用してに見えたが、サンプルプログラムのどれも働きました。彼らは私のデバイスが使用しない特別な標準/プロトコールかもしれないTUIO対応デバイスが必要だと言います。ちょうどTUIOのデモをダウンロードしただけで運がないタッチスクリーンで走った。

また、私のJavaアプリケーションウィンドウにxevをつけて、結果をファイルにストリーミングして、Javaアプリケーションが読み込んでjavaイベントを解析することも考えました。これはかなりハッキーなようだし、それがうまくいくかどうか分からない。誰かがこの作業の可能性を明らかにするなら、私はそれを試みるかもしれません。しかし、現時点では、これは多くの作業に似ています。

継続1.2:

この https://bugs.openjdk.java.net/browse/JDK-8090954 発見

、それが面白いと思いました。

下記のソリューションを掲載しました。

答えて

4

最近あった多くのクロスプラットフォームのプロジェクトジェネレータ

はネイティブ反応して、コルドバは、私が使用しているものを

のいくつかは、ネイティブ.ITを反応するには、プラットフォームに応じてダウンしてコンパイルされたJavaScriptコードを使用しています

React native has support for Gesture Control programming 

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

you can also interface the react portion of code with the existing JAVA code for the app which you have already written 


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

そして、

+1

これを使用して、Windows、Mac、Linuxでマルチタッチを有効にするための既存のJavaプロジェクトをどのように使用できるかの例を挙げることができますか?あるいは、何が必要かを説明する。 – mpyne

+0

質問は具体的には、Javaについては、他のプラットフォームではなく、Javaベースではないと言って、役に立たない。 – caiocpricci2

+0

これをデスクトップのJavaアプリケーションとどのように統合するのかについては、ほんの少しでも助けていただければ幸いです。私たちを始めるには、情報があまりにも短いです。 – vextorspace

1

ソリューションは、私たちにした役に立つ場合の答えを受け入れてください。 eTUIOを使用し、独自のMulti-Touchライブラリを使用してください。そのトリックは、TUIOClientを起動し、TUIOサーバーを実行することでした。 TUIOクライアントは、指定されたポートをリッスンし、TUIOサーバーは、TUIOクライアントが待機しているポートにOSイベントを転送します。

私はLinux用のmtdev2tuioサーバ(出力ブリッジ)を使用し、TUIOクライアントの側でそれを実行しました。

例フロー:

1.)TUIOClientポートをリッスンX

2)OSのイベントからポートXにTUIOイベントを転送TUIOServer Y

のLinux:

1)新しいTUIOClient(3333)

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

このソリューションは理想的ではありませんが、TUIOサーバー(出力ブリッジ)が動作している場合は、すべてのデバイスでマルチタッチをサポートする必要があります。別の欠点は、接触を捕らえてそれらをジェスチャーに解釈する必要があることです。異なるフレームワークでどのように使用するかは、どのように開発されているかによって異なります。私たちはSwing/JavaFXで使用する必要があります。

+0

プラスの面では、どんな種類のジェスチャーを自由に作成することができます! – vextorspace

関連する問題