2016-07-17 74 views

回答

0

您只能在Java層使用它。嘗試將JNI中的數據表示爲java,然後在活動中使用它。

+0

我明白TangoUX只能用於java層。我已經有了一個可訪問TangoService的應用程序,並且在JNI中呈現,但我想添加像TangoUX這樣的UI,它可以指示用戶關於Tango狀態。我試過的是:在這個官方的java示例中設置並運行tangoUX,同時繼續使用JNI訪問TangoService,就像在官方的c例子中一樣。看來TangoUX在這樣的設置下不能正常工作。 –

0

是這是可能的,但不是直截了當的。正如Jason Guo所說,你必須從C API獲得必要的信息,並通過JNI將它發送回Java TangoUx。

基本上,你TangoService回調(C)的功能,你需要調用此時,相應的TangoUX功能(JAVA):

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

爲此,您必須瞭解JNI如何用於調用java函數: http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html

要小心,因爲C回調沒有在主java線程中執行。所以你需要在每個回調中更新JNIEnv(使用JavaVM類)。這個鏈接有一些有用的信息,儘管它使用的是舊版本的JNI。 http://android.wooyd.org/JNIExample/files/JNIExample.pdf

相關問題