2016-07-17 40 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

相关问题