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

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

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

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

Доступ к 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`.
    }
}

См. SessionResumeResult , чтобы узнать, почему Session может не возобновиться.

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

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

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

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

См. также