Отслеживание ARCore случайно зависает в режиме ПАУЗЫ при запуске приложения, восстанавливается после фонового/переднего Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Отслеживание ARCore случайно зависает в режиме ПАУЗЫ при запуске приложения, восстанавливается после фонового/переднего

Сообщение Anonymous »

Я разрабатываю простое приложение AR-линейки для Android на основе Google ARCore.
Приложение концептуально очень простое и следует стандартному конвейеру ARCore:
  • Рендеринг фона камеры
  • Визуализация характерных точек
  • Обнаружение плоскости
  • Нажмите, чтобы разместить две точки и измерить расстояние
    Однако я столкнулся с серьезной проблемой трудно диагностируемая нестабильность отслеживания, которую мне не удалось устранить, несмотря на несколько дней отладки.
Ожидаемое поведение
При запуске приложения:
Инициализация сеанса ARCore
Отслеживание переходов из режима ПАУЗА → ОТСЛЕЖИВАНИЕ
Появляются функциональные точки
Плоскости обнаруживаются последовательно
Фактическое поведение (проблема)
Поведение случайное и недетерминированное:
  • При холодном запуске приложение часто зависает в
    TrackingState.PAUSED на неопределенный срок
  • Самолеты не обнаружены
  • Функциональные точки минимальны или отсутствуют
  • Иногда приложение отправляется в фоновый режим, а затем разблокируется на переднем плане отслеживание
  • Отслеживание переходов в режим ОТСЛЕЖИВАНИЕ
  • Появляются характерные точки и плоскости
  • Даже когда оно разблокируется, отслеживание нестабильно:
  • Быстрое мигание между ОТСЛЕЖИВАНИЕМ и ПАУЗОЙ
  • Эта нестабильность препятствует надежному обнаружению плоскости
  • Измерения AR становятся непригодными
  • Журналы отображаются быстро чередование:
    ОТСЛЕЖИВАНИЕ → ПАУЗА → ОТСЛЕЖИВАНИЕ → ПАУЗА
То, что я уже проверил/исключил. Я тщательно проверил и протестировал следующие моменты:
Жизненный цикл ARCore
  • Session.configure() вызывается до session.resume()
  • session.resume() и session.pause() в потоке пользовательского интерфейса
  • session.update() вызывается из потока GL/render
  • Нет одновременных вызовов резюме() / пауза()
✅ Текстура камеры и настройка GL.
  • Текстура камеры (setCameraTextureName) устанавливается один раз, после создания контекста GL.
  • Нет повторных вызовов для каждого кадра.
    - Больше нет проблем с черным экраном.
✅ Режим обновления.
  • Проверено. оба:
  • Config.UpdateMode.BLOCKING
  • Config.UpdateMode.LATEST_CAMERA_IMAGE
  • Нет изменений в поведении
✅ Проверка попадания и логика рендеринга
  • Проверки попадания отключены, пока отслеживание ПРИОСТАНОВЛЕНО
  • Логика рендеринга не требует принудительного обновления во время ПАУЗЫ
  • Мерцание не вызвано отрисовкой условий
✅ Устройство и среда
  • Похожие приложения (например, AR Ruler) работают хорошо
  • Происходит при нескольких запусках на одном устройстве
  • Одинаковое освещение и среда
  • ARCore установлен и запущен на сегодняшний день
  • Разрешения камеры предоставлены правильно
Вывод
На данный момент удобство использования приложения поставлено под угрозу из-за случайного отслеживания сбоев и нестабильности запуска, и у меня заканчиваются гипотезы.
Любая информация от разработчиков с глубоким опытом работы с ARCore будет чрезвычайно признательна.
Я могу загрузить каждый исходный файл код

Подробнее здесь: https://stackoverflow.com/questions/798 ... background
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»