Ich habe es versucht, aber gescheitert. Ist das möglich ? Wenn nicht, wie erstellen Sie eine ähnliche Verbindung/halten Sie einen engen Bildschirm?Kann Google TangoUX mit Tango C API zusammenarbeiten?
Antwort
Sie können es nur aus der Java-Ebene verwenden. Versuchen Sie, die Daten von JNI nach Java zu bringen und in der Aktivität zu verwenden.
Ja Es ist möglich, aber nicht geradlinig.
Wie Jason Guo sagte, müssen Sie die notwendigen Informationen von der C-API holen und über den JNI an den Java TangoUx zurücksenden.
Grundsätzlich in Ihrem TangoService Rückruf (C) Funktionen müssen Sie das sachgemäße TangoUX Funktion (Java) nennen:
- TangoService_connectOnXYZijAvailable -> mTangoUx.updateXyzCount
- TangoService_connectOnPoseAvailable -> mTangoUx.updatePoseStatus
- TangoService_connectOnTangoEvent -> mTangoUx.updateTangoEvent
Dafür müssen Sie sehen, wie JNI verwendet wird Rufen Sie Java-Funktionen: http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html
Seien Sie vorsichtig, weil die C-Callbacks nicht im Java-Hauptthread ausgeführt werden. Daher müssen Sie JNIEnv bei jedem Rückruf aktualisieren (mit der JavaVM-Klasse). Dieser Link enthält einige nützliche Informationen, obwohl er eine alte Version des JNI verwendet. http://android.wooyd.org/JNIExample/files/JNIExample.pdf
Ich verstehe TangoUX kann nur in Java-Ebene verwendet werden. Ich habe bereits eine funktionierende App, die auf TangoService zugreift und in JNI rendert, aber ich möchte eine Benutzeroberfläche wie die TangoUX hinzufügen, die den Benutzer über den Tango-Status informieren kann. Was ich ausprobiert habe, ist: tangoUX in Aktivität als dieses offizielle Java-Beispiel einzurichten und auszuführen und unterdessen weiterhin JNI zu verwenden, um auf TangoService zuzugreifen, wie im offiziellen c Beispiel. Es scheint, dass TangoUX in einem solchen Setup normalerweise nicht funktioniert. –