Trabalhar com o ARCore para o Jetpack XR

O ARCore para Jetpack XR permite que os apps funcionem com conceitos básicos de realidade aumentada (RA), usando primitivas de compreensão de cena de baixo nível e rastreamento de movimento. Use o ARCore para o Jetpack XR ao criar experiências de RA e precisar usar dados planares ou ancorar conteúdo a um local fixo no espaço.

Entender o ciclo de vida de uma Session

Todos os objetos rastreados pelo ARCore para Jetpack XR precisam ser acessados por um Session. Semelhante ao ciclo de vida de uma atividade, os objetos Session também têm um ciclo de vida que precisa ser mantido de acordo com o uso dos recursos de um objeto Session pelo app. Se o app tiver uma única atividade com suporte a XR, processe o ciclo de vida da Session usando um componente com reconhecimento de ciclo de vida.

Acessar um Session

Um Session precisa ser criado ao usar o ARCore para o Jetpack XR.

Ao usar o Jetpack Compose para XR, use LocalSession para acessar a sessão criada para você.

Retomar uma sessão

A retomada de uma sessão precisa ser feita quando o app estiver pronto para processar mudanças de estado do ARCore para o Jetpack XR. Em muitos casos, isso é feito no callback onResume() da atividade, mas o app pode atrasar o processamento até a interação do usuário.

O snippet de código abaixo mostra um exemplo de como retomar uma sessão.

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

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

Consulte SessionResumeResult para saber por que uma Session pode não ser retomada.

Pausar uma sessão

Quando a atividade for para o segundo plano, pause a Session usando [Session.pause()][Session.pause]. Pausar uma sessão interrompe temporariamente o rastreamento até que a sessão seja retomada, mantendo o estado do sistema de percepção.

Destruir uma sessão

Para descartar permanentemente um Session, use [Session.destroy()][Session.destroy]. Isso libera os recursos usados pela sessão e destrói todos os estados da sessão.

Veja também