0

私はJavaWebStart *アプリケーションの開発を支援しており、ユーザーの場所を取得する方法を探しています。理想的な解決策は、利用可能な最良のハードウェアを使用するJSR-179のようなものですが、それを失敗すると、GPSハードウェア(利用可能な場合)とより直接的にインターフェースすることが1つの可能なオプションです。

誰かがこのようなことを実装しましたか?もしそうなら、あなたはどのようなアプローチを取りましたか?

JSR-179のようなAPIを見つけることができなかったので、いくつかの潜在的な解決策を調査していますが、どちらにも欠点があります。

  1. (仮想)シリアルポートからGPSデータを読み取ります。
    • シリアルポートを介してインターフェイスするハードウェアのみをサポートします。
    • 私の知る限り、使用するポートを自動的に検出することはできないため、ユーザーがこれを構成できるようにする必要があります。これは理想からは程遠いです!
  2. HTML5のGeolocationAPIを利用し、 ScriptEngineAPIを介してインターフェースします。
    • 私はこれまでどちらも使用したことがないので、現時点でこれがどれほど実現可能かはわかりません。

誰かが他の潜在的なアプローチを提案したり、私のアイデアのいずれかが行き止まりであるかどうか教えてもらえますか?

*現在WebStartを使用しており、引き続き使用したいと考えていますが、ジオロケーションを実装できる場合は、 getdownなどを優先してWebStartを削除することを検討してください。

編集: 私が最初に述べなかった追加の要件は、ユーザーがアプリを起動したときの場所だけでなく、ユーザーの現在の場所を追跡できる必要があるということです。

4

3 に答える 3

0

ScriptEngine API は、Geolocation API をサポートするブラウザーにリンクされていないため、役に立ちません。また、Java Web Start はブラウザーから完全に独立しているため (アプレットとは異なり、ブラウザーを閉じてもアプリケーションは動作し続けます)、Geolocation API を呼び出すことはできません。

解決策は、HTML5 Geolocation API を使用する外部メカニズムを介して JWS アプリケーションに場所パラメーターを提供することです。たとえば、アプリケーションを起動するために JNLP ファイルを直接呼び出す代わりに、Geolocation API を照会する JavaScript スニペットを含むページをロードしてから、JSP ファイルの URL を呼び出します。

http://www.example.com/myapp/launcher.jsp?latitude=....&longitude=....

ページはlauncher.jsp、適切なパラメーターを使用して JNLP ファイルを生成します。

<resources>
  <property name="jnlp.myapp.latitude"  value="<%= request.getParameter("latitude") %>"/>
  <property name="jnlp.myapp.longitude" value="<%= request.getParameter("longitude") %>"/>
</resources>

その後、アプリケーションで座標をシステム プロパティとして取得できます。

これは、ユーザーの静的な場所のみに関心がある場合に機能します。ユーザーが移動すると、追跡できなくなります。

于 2012-07-19T10:04:19.377 に答える
0

答え以上の質問とアイデアですが、ここに行きます。

ユーザーが実行しているハードウェアは何ですか? 私はラップトップを推測しています。
ユーザーがスマートフォンも持っていることを主張し、GPS 位置を照会してメイン アプリに報告する小さなアプリを作成できますか?
(彼らはすでにスマートフォンを持っているかもしれないので、これは過度の要件ではないかもしれません)

このレポートは、携帯電話が位置をインターネット上の中央データベースにアップロードし、アプリがその情報をダウンロードすることによって行うことができます。または、携帯電話からラップトップに何らかの方法でワイヤレスで送信することもできます。

于 2012-07-19T10:44:05.650 に答える