Работа с ARCore для Jetpack XR

ARCore для Jetpack XR позволяет приложениям работать с базовыми концепциями дополненной реальности (AR), используя примитивы понимания сцены низкого уровня и отслеживание движения. Используйте ARCore для Jetpack XR при создании AR-опытов, и вам нужно использовать плоские данные или привязывать контент к фиксированному месту в пространстве.

Понимание жизненного цикла Session

Все объекты, отслеживаемые ARCore для Jetpack XR, должны быть доступны через Session . Подобно жизненному циклу Activity , объекты Session также имеют жизненный цикл, который должен поддерживаться в соответствии с использованием вашим приложением функций объекта Session . Если ваше приложение содержит одну активность с поддержкой XR, рассмотрите возможность обработки жизненного цикла Session с помощью компонента Lifecycle-aware .

Доступ к Session

При использовании ARCore для Jetpack XR необходимо создать Session .

При использовании Jetpack Compose для XR используйте LocalSession для доступа к сеансу, созданному для вас.

Возобновить сеанс

Возобновление сеанса должно быть выполнено, когда ваше приложение готово обрабатывать изменения состояния из ARCore для Jetpack XR. Во многих случаях это делается в обратном вызове onResume() вашего Activity, но ваше приложение может захотеть отложить обработку до взаимодействия с пользователем.

В следующем фрагменте кода показан пример возобновления сеанса.

when (val result = session.resume()) {
    is SessionResumeSuccess -> {
        // Session has been created successfully.
        // Attach any successful handlers here.
    }

    is SessionResumePermissionsNotGranted -> {
        // Request permissions in `result.permissions`.
    }
}

Причины, по которым Session может не возобновиться, см. в SessionResumeResult .

Приостановить сеанс

Когда ваша активность переходит в фоновый режим, приостановите Session с помощью Session.pause() . Приостановка сеанса временно останавливает отслеживание до тех пор, пока сеанс не будет возобновлен, сохраняя состояние системы восприятия.

Уничтожить сессию

Чтобы окончательно удалить Session , используйте Session.destroy() . Это освобождает ресурсы, используемые сеансом, и уничтожает все состояния сеанса.

Смотрите также