2016-05-03 4 views
0

первый: здесь есть две темы, которые довольно похожи, но один заканчивается тем, что устройство ошибочно, другие находятся на C API ... вот почему открывают новый вопрос ,Google Tango Update Listener onXyzIjAvailable Callback никогда не набирается

Я использую Google Tango SDK с jMonkeyEngine для научного приложения дополненной реальности. Пока все отлично работало. Но теперь я хотел бы использовать данные Point Cloud от Tango, которые передаются слушателю (класс: OnTangoUpdateListener). (Tango Depth Perception) Есть 4 метода:

  • onPoseAvailable (TangoPoseData поза)
  • onXyzIjAvailable (TangoXyzIjData xyzIj)
  • onTangoEvent (TangoEvent arg0)
  • onFrameAvailable (интермедиат arg0)

А.Н. 3 из них называются регулярно. Проблема заключается в следующем: onXyzIjAvailable никогда не вызывается, поэтому я не могу получить доступ к данным облака точек. Вот мой фрагмент кода, знаете ли вы, что я делаю неправильно или что я могу попробовать?

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

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

Весь файл можно найти здесь: Pastebin

Спасибо за вашу помощь!

PS: Устройство работает безупречно с примером проекта. Это не проблема с оборудованием.

+0

были вам удалось решить? посмотрите на http://stackoverflow.com/questions/31981756/project-tango-never-called-the-onxyzijavailable-callback для справки. – Nativ

+1

Эта нить закончилась тем, что нож для резьбы вернул его танго, потому что он был неисправен. Однако я узнал, какая часть препятствует обратному вызову. Кажется, что PointCloudSensor нужна камера. Я даю камере вторую операцию, чтобы изображение камеры было в фоновом режиме для приложения дополненной реальности. Проблема в том, что только один вид деятельности может сразу получить доступ к камере ... Надеюсь, кто-то может помочь :) – Gem

+0

Да, камера является единственным экземпляром, и только одно приложение/услуга/деятельность и так далее могут ее использовать. Для того, что я получил, вы можете получить Point Clould только при подключении объекта Tango к Renderer (и подключении этого средства визуализации к поверхности). Я не уверен, потому что я основываю это предположение только на своем опыте, а не на толпе. – Nativ

ответ

1

Я узнал, что препятствует обратному вызову. Аккуратно только одна активность за раз может использовать камеру. Когда я разрабатываю приложение дополненной реальности, у меня есть два вида деятельности. Один для фона - показ видеокамеры - и один для рендеринга виртуальных объектов - с помощью камеры для информации о глубине. Хотя камера RGB и камера Depth не являются одним и тем же устройством, Android думает, что они есть, и позволяет только доступ к одному из них за раз. Поэтому деактивация фонового видео позволяет обратный вызов данных глубины и наоборот.

Если кто-то знает, как использовать оба из них в одно и то же время - это было бы потрясающе.

Cheers, Gem