2016-07-17 6 views

答えて

0

Javaレイヤーからのみ使用できます。 JNIからjavaにデータを書き出し、そのアクティビティで使用してください。

+0

私はTangoUXがJavaレイヤーでのみ使用できると理解しています。私はすでにTangoServiceにアクセスし、JNIでレンダリング可能な実行可能なアプリケーションを持っていますが、Tangoのステータスについてユーザに示すことができるTangoUXのようなUIを追加したいと思います。私が試したことは、公式のJavaの例としてtangouxをセットアップして実行し、公式のCの例のようにTangoServiceにアクセスするためにJNIを使​​い続けます。このような設定では、TangoUXは正常に動作しないようです。 –

0

はい可能ですが、単純ではありません。

Jason Guo氏によると、C APIから必要な情報を取得し、JNI経由でJava TangoUxに送り返す必要があります。

基本的には、あなたのTangoServiceコールバック(C)関数では、appropiate TangoUX機能(Javaの)を呼び出す必要があります。

  • TangoService_connectOnXYZijAvailable - > mTangoUx.updateXyzCount
  • TangoService_connectOnPoseAvailable - > mTangoUx.updatePoseStatus
  • TangoService_connectOnTangoEvent - > mTangoUx.updateTangoEvent

そのためには、JNIがどのように慣れているかを知る必要がありますhttp://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html

CのコールバックがメインのJavaスレッドで実行されないため、注意してください。したがって、各コールバックで(JavaVMクラスを使用して)JNIEnvを更新する必要があります。このリンクには、JNIの古いバージョンが使用されていますが、いくつかの有益な情報があります。 http://android.wooyd.org/JNIExample/files/JNIExample.pdf

関連する問題