修改
我在测试应用程序中实现了TangoCameraPreview,它运行正常。我认为这个错误是由我的应用程序的具体情况引起的。我正在使用Rajawali在我的应用程序中渲染一些图形,这样就可以了,但我不确定......
原始
我正在使用Java API并尝试使用TangoCameraPreview class而不是像examples那样构建我自己的SurfaceView和Renderer。但看起来JNI级别的某些东西失败了,我无法让它发挥作用。有时,我会看到视频一瞬间,但不可避免地我总是得到错误:
12-30 17:20:03.544 4005-4515/com.gloppygloop W/tango_client_api: TangoErrorType TangoService_updateTexture(TangoCameraId, double*): TangoService got a negative timestamp -1.000000 from camera with id 2.
12-30 17:20:03.546 4005-4515/com.gloppygloop E/TangoCameraPreview: Error updating texture.
com.google.atap.tangoservice.TangoInvalidException
at com.google.atap.tangoservice.Tango.throwTangoExceptionIfNeeded(Tango.java:826)
at com.google.atap.tangoservice.Tango.updateTexture(Tango.java:333)
at com.google.atap.tangoservice.TangoCameraPreview.updateTexture(TangoCameraPreview.java:267)
at com.google.atap.tangoservice.TangoCameraPreview$MainRenderer.onDrawFrame(TangoCameraPreview.java:117)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1523)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
我基本上只是调用TangoCameraPreview.onFrameAvailable,只要我从OnTangoUpdateListener获得OnFrameAvailable,就像他们在文档中推荐的那样。仅据我所知,这只是因为JNI方法无法从相机中正确获取时间戳并导致错误。我正在尝试使用Fisheye相机,但我也尝试过彩色相机和RGBIR相机。
答案 0 :(得分:2)
找到了解决方案,所以我将其留在这里以防其他任何人遇到此问题。问题是我在与TangoCameraPreview相同的上下文中使用了另一个GLSurfaceView。经过一番搜索,我发现this answer为我清理了一切。基本上,只要在同一个上下文中有多个SurfaceView,就需要了解这些视图的Z顺序。否则,你会像我一样遇到奇怪的行为。 Tango错误只是误导,因为即使TangoCameraPreview按预期运行,我仍然会收到错误。