2016-05-03 23 views
0

zuerst: Es gibt zwei Themen in hier, die ziemlich ähnlich sind, aber man endete mit dem Gerät fehlerhaft, andere sind auf der C-API ... deshalb eine neue Frage zu öffnen .Google Tango Update-Listener onXyzIjAvailable Callback nie ruft

Ich verwende das Google Tango SDK mit jMonkeyEngine für eine wissenschaftliche Augmented Reality-Anwendung. Bis jetzt hat alles super geklappt. Aber jetzt möchte ich die Point Cloud Data aus dem Tango verwenden, die einem Listener gegeben wird (Klasse: OnTangoUpdateListener). (Tango Depth Perception) Es gibt 4-Methoden:

  • onPoseAvailable (TangoPoseData Pose)
  • onXyzIjAvailable (TangoXyzIjData xyzIj)
  • onTangoEvent (TangoEvent arg0)
  • onFrameAvailable (int arg0)

ein 3 von ihnen werden regelmäßig genannt. Das Problem ist: onXyzIjAvailable wird nie aufgerufen, so dass ich nicht auf die Punktwolkendaten zugreifen kann. Hier ist mein Code-Snippet, weißt du, was ich falsch mache oder was ich ausprobieren könnte? Pastebin

Vielen Dank für Ihre Hilfe:

public class TangoUpdateListener implements OnTangoUpdateListener { 
@Override 
      public void onXyzIjAvailable(TangoXyzIjData xyzIj) 
      { 

       System.out.println("POINT CLOUD AVAILABLE"); 
       Log.e("CLOUD", "CLOUD AVAILABLE"); 
     } 
} 

Die ganze Datei kann hier bestellt werden!

PS: Das Gerät funktioniert einwandfrei mit dem Beispielprojekt. Es ist kein Hardware-Problem.

+0

waren Sie es lösen verwaltet? Werfen Sie einen Blick auf http://stackoverflow.com/questions/31981756/project-tango-ne-called-the-onxyzijavailable-callback als Referenz. – Nativ

+1

Dieser Thread endete mit dem Thread-Öffner, der seinen Tango zurückgab, weil er fehlerhaft war. Ich habe jedoch herausgefunden, welcher Teil den Rückruf verhindert. Es scheint, dass PointCloudSensor die Kamera benötigt. Ich gebe der Kamera eine zweite Aktivität, um das Kamerabild im Hintergrund für eine Augmented-Reality-App zu haben. Das Problem ist, nur eine Aktivität scheint in der Lage zu sein, auf die Kamera sofort zugreifen ... Hoffe jemand kann helfen :) – Gem

+0

ja die Kamera ist eine einzelne Instanz und nur eine App/Service/Aktivität und so weiter kann es verwenden. Für das, was ich bekommen habe, kann man den Point Clould nur erhalten, wenn man das Tango-Objekt mit einem Renderer verbindet (und diesen Renderer mit der Surface verbindet). Ich bin mir nicht sicher, ob ich daran denke, da ich diese Annahme nur von meiner Erfahrung und nicht von der Weisheit der Menge abhängig mache. – Nativ

Antwort

1

Ich habe herausgefunden, was den Callback hemmt. Tatsächlich kann immer nur eine Aktivität die Kamera benutzen. Während ich eine Augmented Reality App entwickle, habe ich zwei Aktivitäten. Eine für den Hintergrund - zeigt das Kamera-Video - und eine für das Rendern der virtuellen Objekte - mit der Kamera für Tiefeninformationen. Obwohl die RGB-Kamera und die Tiefenkamera nicht dasselbe Gerät sind, denkt Android, dass sie es sind, und erlaubt nur den Zugriff auf jeweils eines derselben. Daher ermöglicht das Deaktivieren des Hintergrundvideos den Tiefen-Daten-Rückruf und umgekehrt.

Wenn jemand weiß, wie man beide gleichzeitig benutzt - das wäre toll.

Cheers, Gem