Jetpack Compose para XR

Crie layouts de interface espacial de forma declarativa que aproveitem os recursos espaciais do Android XR.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
21 de outubro de 2026 - - 1.0.0-beta02 -

Declarar dependências

Para adicionar uma dependência ao XR Compose, é preciso incluir o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.

Adicione as dependências dos artefatos necessários ao arquivo build.gradle do seu app ou módulo:

Groovy

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-beta02"

    // Use to write unit tests
    testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta02"
}

Kotlin

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-beta02")

    // Use to write unit tests
    testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta02")
}

Para mais informações sobre dependências, consulte Adicionar dependências de build.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.0

Versão 1.0.0-beta02

21 de outubro de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-beta02 e androidx.xr.compose:compose-testing:1.0.0-beta02. A versão 1.0.0-beta02 contém estes commits.

Mudanças na API

  • As bibliotecas agora têm como destino o Kotlin 2.2 e exigem o kotlinc 2.2 (I82396, b/498369605).
  • O parâmetro halfLifeMs de FollowMode.soft() foi renomeado como halfLifeMillis. (I39187).
  • Conversão de PitchLimits em um @JvmInline value class, empacotando dois números flutuantes em um Long para eliminar alocações de objetos. (Id43c3).
  • Adição de um novo parâmetro para FollowMode.soft: halfLifeMs, startDelay e startThresholds. O parâmetro durationMs foi removido porque não é mais necessário, já que estamos fazendo a transição de um algoritmo smoothStep para um algoritmo exponentialDecay. (If0140).
  • Remova a sobrecarga descontinuada de SpatialActivityPanel. Use a sobrecarga de SpatialActivityPanel que aceita um SpatialActivityPanelController. (I5abc3).
  • Ative transições entre conteúdo combinável 3D e 2D em uma atividade no FullSpaceMode. Essa mudança é controlada por SpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled. (I4e237).
  • Exposição da sobrecarga experimental de Subspace que usa um parâmetro FollowTarget para oferecer suporte ao conteúdo seguinte. (Iec1a9).
  • Os modificadores móveis descontinuados foram removidos. Em vez disso, use o novo modificador móvel que aceita o novo MovePolicy como parâmetro. (Ib135d).
  • Remoção do DragPolicy descontinuado. Use SubspaceModifier.movable(). (I108d4).
  • As sobrecargas sem estado Slider e RangeSlider foram descontinuadas em favor das versões com estado. As APIs activeRangeStart e activeRangeEnd em RangeSliderState foram renomeadas como startValue e endValue, descontinuando as APIs Slider mais antigas, não promovidas e experimentais com DeprecationLevel.HIDDEN. (If8995).

Correções de bugs

  • Correção de RotateToLookAtUser com a introdução de poseInActivitySpace para garantir o cálculo correto da pose para todos os tipos de subespaço, incluindo aqueles anexados a âncoras ou usuários.Ica367b
  • Correção de uma falha de restrições quando o Orbiter é anexado a painéis grandes (I8c4bf).
  • Correção de um bug em SubspaceLayoutNode em que removeAll() causava alocações desnecessárias de ArrayList. Também corrigimos o desempenho do cálculo de profundidade. I34a10a
  • A dependência androidx.lifecycle:lifecycle-runtime foi atualizada para 2.10.0. Essa versão é necessária para que as verificações de lint do ciclo de vida do pacote sejam executadas com o AGP versão 9.5.0-alpha04 ou mais recente. (I99bfd, b/556807521).
  • Melhoria dos kdocs relacionados a AudioOutputProvider para destacar que ele não deve ser reutilizado com várias instâncias de ExoPlayer (I6b18e).
  • Correção de pequenos problemas de ortografia e gramática do kdoc (Id3ba6).

Problemas conhecidos

  • Esta versão de androidx.xr.compose depende de androidx.xr.scenecore:1.0.0-rc01, que tem um vazamento de memória conhecido. Na configuração do build, é possível substituir explicitamente a dependência SceneCore pela versão 1.0.0, que inclui uma correção para o vazamento de memória.

Versão 1.0.0-beta01

23 de setembro de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-beta01 e androidx.xr.compose:compose-testing:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações.

Mudanças na API

  • Remoção de DragPolicy, que foi descontinuado. Use SubspaceModifier.movable(). (I108d4).
  • O ResizePolicy descontinuado e os usos dele em SpatialPanel e SpatialExternalSurface foram removidos. Remoção de uma função SubspaceModifier.resizable descontinuada. Use o novo SubspaceModifier.resizable com um novo ResizePolicy. (I59e6b)
  • Adição do parâmetro isPitchUpdateEnabled para permitir a ativação ou desativação do rastreamento de tom de forma independente. (Ie9e86).
  • A nulidade de pitchLimits foi removida, e PitchLimits.UNCONSTRAINED foi renomeado como PitchLimits.FullRange. (I0154f).
  • ExposedDropdownMenu agora é uma função de extensão em ExposedDropdownMenuBoxScope em vez de um membro. Talvez seja necessário atualizar seu código com uma nova importação. (Ie8a65).
  • A classe SurfaceProtection descontinuada foi removida. Use SpatialExternalSurfaceProtection. (Iab2c6).
  • A função Orbiter que usa um OrbiterPoseProvider foi descontinuada e substituída pela que usa SpatialAlignment. (I4d12b).
  • O SpatialActivityPanel agora exige um SpatialActivityPanelController (instanciado usando rememberSpatialActivityPanelController) para iniciar e gerenciar atividades incorporadas. (Id25c6).
  • O parâmetro upDirection foi removido de rotateToLookAtUser, e os parâmetros de restrições de rotação (isYawUpdateEnabled e pitchLimits) foram adicionados (I1370a).

Correções de bugs

  • Correção de vários problemas de InteractionPolicy. Ocorria uma falha se um evento de entrada acontecesse logo que o elemento que pode ser composto ou filho (por exemplo, um Orbiter) iniciava uma sequência de descarte. Também foi corrigido um problema em que um filho recebia eventos de passagem do cursor. (Ifc477).
  • Reduzimos o tamanho do painel em RotateToLookAtUserActivity para evitar cortes em dispositivos com campo de visão menor. (I8d672).

Problemas conhecidos

  • Há um problema com os painéis do Compose XR em que a criação de muitos painéis em uma única atividade pode causar corrupção no que está sendo visualizado, mesmo depois que os painéis são destruídos.

Versão 1.0.0-alpha17

12 de agosto de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-alpha17 e androidx.xr.compose:compose-testing:1.0.0-alpha17. A versão 1.0.0-alpha17 contém estas confirmações.

Mudanças na API

  • Remova a classe de valor Meter, que foi substituída por virtualPixelDensity em Scenecore. (I690ee).
  • A API SpatialGltfModel agora é experimental e precisa ser ativada para uso. (I4557e).
  • Tornar system redimensionável anulável (Ib0093).
  • Density foi exposto em SubspaceSemanticsInfo para testes. (I2e826).
  • Renomeação da opção padrão ResizePolicy como system e adição de uma nova opção Default sem parâmetros (Ic8b16).
  • FollowTarget foi marcado como experimental. Toda a API FollowingSubspace agora é experimental. (Id4ee3).
  • As APIs GltfAnimation foram removidas (Ic2894).
  • O método parametrizado MovePolicy.default() foi renomeado como MovePolicy.system(). Introdução de uma propriedade val MovePolicy.Default para representar o comportamento de movimento padrão. (Iedcc9).
  • Os requisitos de ativação de ExperimentalMoveAnchorPolicy foram expandidos para PlaneSemantic e PlaneOrientation (Ief927).
  • Remoção de resetMins de VolumeConstraints.offset (Ib2f2f)
  • A função SceneCoreEntitySizeAdapter descontinuada foi removida. (Ib6722).
  • A sobrecarga descontinuada de Subspace com allowUnboundedSubspace foi removida. (I8e97f).
  • A sobrecarga do modificador de semântica descontinuada foi removida. (I4ac10).

Correções de bugs

  • Correção de um problema em que os filhos de um Composable com um InteractionPolicy anexado acionavam eventos de entrada (Icdba6).

Versão 1.0.0-alpha16

15 de julho de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-alpha16 e androidx.xr.compose:compose-testing:1.0.0-alpha16. A versão 1.0.0-alpha16 contém estas confirmações.

Mudanças na API

  • As APIs ComponentOverride foram removidas (I820c4).
  • As APIs GltfAnimation e SpatialGltfModelAnimation foram marcadas como experimentais. Algumas propriedades foram transformadas em getters. (I8d689, b/524771027).
  • Corrigimos o comportamento geral de densidade estabelecendo a conversão entre metros e pixels como constante. O Meter.kt foi descontinuado. Agora, o Session.scene.virtualPixelDensity pode ser usado como alternativa. (I122ff, b/430097855, b/474168798)
  • Atualização do modificador redimensionável para usar um ResizePolicy em vez de dois modificadores (I7fb0f, b/496257436, b/519672992).
  • Adição de um parâmetro de tolerância Dp = Dp(0.5f) a todas as declarações públicas de igualdade de posição e dimensão de usar pontos flutuantes em SubspaceAssertions.kt. O comportamento de tolerância padrão (0.5.dp) está totalmente documentado. (I266cb, b/521491915).
  • Adicionamos uma sobrecarga móvel com o parâmetro movePolicy e descontinuamos transformingMovable e movable (Ic88c1, b/481781189).
  • Adicionamos novas variantes não interativas de itens de lista padrão e segmentados que seguem as especificações do Material Expressive. A versão não expressiva foi descontinuada. (Ide4de, b/491994186).
  • Para o Subspace, o parâmetro allowUnboundedSubspace foi descontinuado e ocultado. O comportamento ilimitado agora deve ser alcançado usando SubspaceModifier.requiredSizeIn(maxWidth = Dp.Infinity, maxHeight = Dp.Infinity, maxDepth = Dp.Infinity) no modificador Subspace. O parâmetro allowUnboundedSubspace foi removido de FollowingSubspace. (Ia72ae, b/433624021).
  • Conversão de Session.create em uma função de suspensão. (I5d27f).
  • Adicionamos SubspaceModifier.spatializedAudioOutput, que permite espacializar a reprodução de áudio espacial usando ExoPlayer ou SoundEffectPlayer (I46697, b/489421980, b/497867019).
  • Atualizamos ComponentActivity.requestHomeSpace() e requestFullSpace() para retornar SpaceRequestResult para verificação de status. (If1672).
  • AnchorEntity foi atualizado para AnchorSpace (Ifa95e, b/513619219).
  • Método fromResource irrestrito de SpatialGltfModelSource (I1f5a1, b/503047416)
  • Os membros de SubspaceSemanticsMatcher são públicos: a propriedade description, os métodos de fábrica complementares (expectValue, keyIsDefined, keyNotDefined), as funções de membro (matches, matchesAny) e os operadores (and, or, not). (I972a4, b/460427288)
  • Atualizamos SubspaceModifier.semantics, SubspaceModifier.testTag, SubspaceSemanticsInfo e SubspaceSemanticsModifierNode para usar tipos de semântica espacial selecionados. (I80dea, b/460427288).
  • Renomeamos position como align em SpatialAlignment e removemos métodos de deslocamento direcional individuais em favor de uma API align unificada. (I9bdb2, b/479805937).
  • As APIs descontinuadas do modo de espaço foram removidas de SpatialConfiguration. (I1ef5c, b/458712461).
  • Lançamento de SubspaceSemanticsConfiguration. Esta é uma configuração de propriedades de semântica para um nó espacial. Essa classe expõe com segurança métodos de consulta para semântica 3D sem vazar recursos semânticos 2D fundamentais para consumidores externos. (Id025e, b/460427288).
  • Introdução de SubspaceSemanticsPropertyReceiver: um wrapper dedicado que limita as propriedades do contêiner de layout 3D a campos válidos (inicialmente testTag e contentDescription). (I5cf5c, b/460427288)

Correções de bugs

  • Atualizamos o hasContentDescription do modificador semântico para usar a correspondência de substring como padrão. (I08214).
  • Adicionamos o FollowBehavior.ExponentialDecay() restrito, que oferece um comportamento de acompanhamento suave guiado pela física elástica. (I7449c, b/485639909, b/500493335)

A maioria das APIs será afetada por isso. Especificamente, o LocalSession CompositionLocal e todos os CompositionLocals que dependem de LocalSession (por exemplo, LocalSpatialConfiguration, LocalSpatialCapabilities etc.) agora serão resolvidos como null ou as versões não XR antes da inicialização do Session.

Quando o Session estiver disponível, a recomposição será acionada com o estado correto. (I0cfa4, b/514712835, b/514712835).

  • Esclarecimento da documentação de ComponentActivity.requestHomeSpace e ComponentActivity.requestFullSpace sobre o comportamento de suspensão, cancelamento e simultaneidade. Atualização dos testes para verificar a propagação de CancellationException. (I22f75, b/493289528).

Versão 1.0.0-alpha15

17 de junho de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-alpha15 e androidx.xr.compose:compose-testing:1.0.0-alpha15. A versão 1.0.0-alpha15 contém estas confirmações.

Mudanças na API

  • O ResizePolicy e o antigo modificador redimensionável foram descontinuados e substituídos por uma nova sobrecarga de SubspaceModifier.resizable e SubspaceModifier.transformingResizable. (I9e4bc).
  • APIs SpatialGltfModel atualizadas: adicionamos suporte ao carregamento de modelos de recursos usando SpatialGltfModelSource.fromResource. Renomeamos "speed" como playbackSpeed em SpatialGltfModelAnimation e adicionamos um método resume(). SpatialGltfModelStatus.Loaded e Loading agora são objetos. (I523de).
  • rotateToLookAtUser foi marcada como uma API experimental. (I86c16).
  • A variável protegida targetCurrentPose foi movida e renomeada para a variável local currentTargetPoseMeter. (Ia557c).
  • Atualização dos kdocs SpatialPanel e SpatialExternalSurface para incluir onde o objeto é renderizado no tamanho do layout (I72104).
  • Encapsulamos a lógica de carregamento de SpatialGltfModel em SpatialGltfModelState e esclarecemos o comportamento de falha. (Ibe98b).
  • Esclarecimento de depth em kdocs de SubspaceModifer.size (I0f84f).

Versão 1.0.0-alpha14

19 de maio de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-alpha14 e androidx.xr.compose:compose-testing:1.0.0-alpha14. A versão 1.0.0-alpha14 contém estas confirmações.

Mudanças na API

  • Introdução de transformingMovable para o movimento 3D padrão processado pelo sistema e de uma nova sobrecarga para movable para processar comportamentos de movimento personalizados. (I50960).
  • SpatialGltfModel.fromData() foi removido. (I4d083).
  • Adicionamos uma nova interface de nó modificador, SubspaceMeasuredSizeAwareModifierNode, que fornece um callback onRemeasured após a transmissão de medição. SubspaceLayoutAwareModifierNode agora estende essa nova interface. O modificador onSizeChanged foi atualizado para usar onRemeasured, garantindo que o callback seja acionado logo após a medição, não após o posicionamento. (Iafbae).
  • Atualização de InteractionPolicy para Interface (I0ff30).
  • Atualizamos o Compose compileSdk para a API 37. Isso significa que uma versão mínima do AGP 9.2.0 é necessária ao usar o Compose. (Id45cd).
  • Atualização dos kdocs de Size (Iefa9a).

Versão 1.0.0-alpha13

6 de maio de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-alpha13 e androidx.xr.compose:compose-testing:1.0.0-alpha13. A versão 1.0.0-alpha13 contém estas confirmações.

Mudanças na API

  • A API Orbiter está aguardando outras mudanças. Recomendamos suprimir os avisos de descontinuação para Orbiters e ficar de olho nas mudanças do Orbiter nas próximas versões.
  • Quem usa SceneCoreEntity para renderizar glTFs precisa garantir que está transmitindo session.scene.activitySpace para o parâmetro parent da chamada GltfModel.create para que os glTFs sejam renderizados.
  • Adicionamos a API SpatialGltfModel para que os desenvolvedores possam adicionar Gltfs aos apps do Compose para XR. Os desenvolvedores também podem consultar animações e nós nos modelos glTF. (I8b542, b/495422586).
  • Mudança de SceneCoreEntitySizeAdapter de classe para interface (I5a784, b/475292310).
  • SurfaceProtection foi renomeado como SpatialExternalSurfaceProtection Atualização dos kdocs de SpatialExternalSurface (Ifad0a, b/485231082).
  • Descontinuação de currentWindowAdaptiveInfo e introdução da V2 (I40ecf, b/424442112).
  • O modificador resizable agora é público e aplicável a grupos (por exemplo, SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787)
  • O modificador movable agora é público. No momento, esse modificador funciona bem para SpatialPanels e SpatialExternalSurface. No entanto, a intenção é que ele seja compatível com todos os SubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • SpatialEnterTransition e SpatialExitTransition marcados como @Immutable (If1710, b/487757837).
  • A API SpatialGltfModel está marcada como restrita para esta versão, aguardando testes adicionais. (Ibf003, b/466090694).
  • Renomeamos DeviceTrackingMode.LAST_KNOWN como SPATIAL_LAST_KNOWN (com um substituto descontinuado), adicionamos INERTIAL_LAST_KNOWN para rastreamento de 3DoF e adicionamos TRACKING_DEGRADED a TrackingState. (Ie661c, b/445466590).
  • Remoção do SpatialLayoutSpacer descontinuado (I7b36c).
  • Remoção da API de padding descontinuada (If1886).
  • Adicionamos floatRange aos valores de viés. O valor padrão de LayoutDirection foi removido (I9d74e).

Correções de bugs

  • Adicionamos exemplos de código e documentação do KDoc para SpatialColumn, SpatialRow e SpatialCurvedRow. (Iaf54f, b/495777633).

Versão 1.0.0-alpha12

25 de março de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-alpha12 e androidx.xr.compose:compose-testing:1.0.0-alpha12. A versão 1.0.0-alpha12 contém estes commits.

Mudanças na API

  • Adicione as APIs SpatialGltfModel e SpatialGltfModelAnimation para renderizar glTFs e controlar animações. Mudança de SpatialGltfModelState para AutoCloseable, que agora precisa ser fechado para liberar os recursos. (I11fde, b/466065486, b/481379924). No entanto, a API SpatialGltfModel está marcada como restrita para esta versão, aguardando testes adicionais. (Ibf003, b/466090694).
  • Adicionamos uma sobrecarga vazia descontinuada para SubspaceModifier.rotate. (Idceb6).
  • A função SpatialSmoothFeatheringEffect foi renomeada como spatialSmoothFeatheringEffect e movida para um módulo de desenho. O valor padrão de suavização de SpatialExternalSurface foi atualizado para nulo, o que imita a antiga funcionalidade ZeroFeatheringEffect. (I5fdaa, b/460426800).
  • Contato removido: onPointSourceParamsAvailable. Uma API de espacialização de áudio diferente vai estar disponível em breve. (I86507, b/458513439).
  • Adicionamos o comportamento RTL para modificadores de subespaço de deslocamento. Também adicionamos absoluteOffset para ignorar a direção do layout. (I30e4b, b/474409165).

Versão 1.0.0-alpha11

25 de fevereiro de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-alpha11 e androidx.xr.compose:compose-testing:1.0.0-alpha11. A versão 1.0.0-alpha11 contém estes commits.

Novos recursos

  • Adição do parâmetro SuperSampling a SpatialExternalSurfaces (Icd4d1)

Problemas conhecidos

  • Um problema com SurfaceEntity no SceneCore pode causar falhas em apps ao criar instâncias de SpatialExternalSurface. Esse problema foi resolvido nas versões androidx.xr.scenecore:scenecore-*:1.0.0-alpha13, androidx.xr.compose:compose:1.0.0-alpha12 e posteriores. Os apps afetados precisam ser atualizados para as versões mais recentes.

Mudanças na API

  • Mudanças no padding do modificador de subespaço para reconhecimento da direção do layout. (I53e25).
  • SpatialCapabilities agora está selado e não pode ser estendido. (I07aef).
  • As APIs SpatialRow e SpatialColumn que aceitam um parâmetro SpatialAlignment genérico foram descontinuadas. Em vez disso, use as APIs que aceitam verticalAlignment ou horizontalAlignment para SpatialRow e SpatialColumn, respectivamente. (Iec390).
  • Combinação de APIs de função SubspaceLayout de sobrecarga (Idd30a)
  • SubspaceModifier.lookAtUser foi renomeado como rotateToLookAtUser, e o parâmetro up foi renomeado como upDirection. (Icafb8).
  • SpatialRow agora é uma função inline (Ia2f20).
  • Transformação de SpatialColumn em uma função inline (I681be).
  • A API Billboard foi removida (Ib76cd).

Versão 1.0.0-alpha10

28 de janeiro de 2026

Lançamento de androidx.xr.compose:compose:1.0.0-alpha10 e androidx.xr.compose:compose-testing:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estes commits.

Mudanças na API

  • Remoção da API descontinuada: ApplicationSubspace (Ia6596, b/468345186).
  • Atualização de SpatialShape para uma interface selada (I7e3f5, b/460426800).
  • Remoção de APIs descontinuadas no SpatialAlignment. (Ib0b61, b/468011887).
  • Descontinuação de SpatialLayoutSpacer e introdução de SpatialSpacer. (I2ebf3, b/466071383).
  • Atualizamos a API UserSubspace para substituir a terminologia "bloqueio lento" por "bloqueio flexível". (I9ded1, b/464035984).

Versão 1.0.0-alpha09

3 de dezembro de 2025

Lançamento de androidx.xr.compose:compose:1.0.0-alpha09 e androidx.xr.compose:compose-testing:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estes commits.

Mudanças na API

  • Adição de modificadores LookAtUser e Billboard, que permitem que o conteúdo sempre fique de frente para o usuário. (I49b99).
  • Adiciona a capacidade de definir um InteractionPolicy como SpatialExternalSurfaces e SpatialPanels, permitindo a detecção de cliques e outros eventos de entrada 3D. (Iae155).
  • Adicionamos uma sobrecarga de tamanho e modificador requiredSize com largura, altura e profundidade como valores de Dp. (I92f79).
  • A interface ParentLayoutParamsModifier agora estende DelegatableSubspaceNode. (I1a6d4).
  • O ApplicationSubspace foi descontinuado e substituído pela API Subspace.
    • O comportamento da API Subspace foi alterado para fornecer apenas um subespaço em todo o aplicativo na pose e na escala recomendadas.
    • A API PlanarEmbeddedSubspace foi introduzida para fornecer subespaços incorporados em contextos 2D. (Id3343).
  • Adicionamos a flag shouldAutoInvalidate à API SubspaceModifier.Node. (I93902).
  • Adição de required(Size|Width|Depth|Height) em APIs que permitem que os desenvolvedores restrinjam o tamanho de um @SubspaceComposable a um intervalo específico, desconsiderando as restrições de medição recebidas do elemento pai. (Ifaa78).
  • Adição de SubspaceModifier.onSizeChanged, que fornece um callback simples e focado para que os desenvolvedores reajam quando o tamanho de um @SubspaceComposable muda. (I994f9).
  • A API Volume foi removida. A API SceneCoreEntity precisa ser usada em vez da API Volume. (I4162b).
  • Divida SubspaceLayoutModifierNode.requestRelayout em invalidateMeasurement/invalidatePlacement. (I14805).
  • Adição da API SpatialGltfModel, que permite que os desenvolvedores renderizem glTFs no Compose. (Icc91f).
  • Introdução da API combinável SpatialGltfModel para renderizar glTFs com facilidade (Iade67).

Correções de bugs

  • Correção de um bug de layout em SceneCoreEntity. Agora, ele deve respeitar as restrições. (I11bb8).
  • Os módulos jxr-compose foram reduzidos para Compile sdk = 34 (I2d5db).

Versão 1.0.0-alpha08

22 de outubro de 2025

Lançamento de androidx.xr.compose:compose:1.0.0-alpha08 e androidx.xr.compose:compose-testing:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estes commits.

Mudanças na API

  • Mudança de ResizePolicy para aceitar onResizeStart, onResizeUpdate e onResizeEnd. (I7e21f).

Correções de bugs

  • Evitamos uma falha ao destruir uma atividade com um Subspace. (I595a1).

Versão 1.0.0-alpha07

24 de setembro de 2025

Lançamento de androidx.xr.compose:compose:1.0.0-alpha07 e androidx.xr.compose:compose-testing:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estes commits.

Mudanças na API

  • Melhoria do KDocs para SpatialMainPanel. (I27b70, b/444467891).
  • Introdução de SpatialArrangement para organizar filhos ao longo do eixo principal em layouts 3D, como SpatialRow e SpatialColumn. Essa nova API oferece opções de organização conhecidas do Compose 2D, incluindo Start, End, Center, SpaceBetween, SpaceAround e SpaceEvenly, com suporte total para as direções de layout LTR e RTL. (I7db38, b/436289959).
  • Adicionamos uma interface de base para SubspaceModifier.Node para melhorar a segurança de tipos e a usabilidade das interfaces de extensão, como
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (interno) (Iede00, b/440599394, b/440599394)
  • SpatialExternalSurface sem restrições (I33315, b/439646773)
  • Introdução de SubspaceModifier aos elementos combináveis do Subspace e substituição do parâmetro de restrições por SubspaceModifier com SubspaceModifiers relacionado ao tamanho. Se allowUnboundedSubspace for verdadeiro, os subespaços ainda poderão ter restrições ilimitadas. (Ib06e6, b/433331675).
  • Descontinuação de SubspaceModifiers móvel e redimensionável, já que DragPolicy() e ResizePolicy() agora fazem parte da API SpatialPanel e SpatialExternalSurface (I397bf, b/437924639).
  • Adição de suporte para LayoutDirection em layouts espaciais. O elemento que usa SpatialAlignment agora vai posicionar corretamente os elementos nos contextos LTR e RTL. (I964bb, b/436300273).
  • Adicione parâmetros redimensionáveis e móveis às APIs Panel para garantir que esses comportamentos só possam ser aplicados a contêineres compatíveis. (Id491c).
  • Adição de sizeIn, widthIn, heightIn e depthIn SubspaceModifiers, que permitem definir restrições exatas de mínimo e máximo para largura, altura e profundidade. (I1af09, b/433330761)

Versão 1.0.0-alpha06

13 de agosto de 2025

Lançamento de androidx.xr.compose:compose:1.0.0-alpha06 e androidx.xr.compose:compose-testing:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estes commits.

Correções de bugs

  • Recrie o ComposeXrOwnerLocals quando o proprietário do ciclo de vida for destruído. (9123ce1)

Versão 1.0.0-alpha05

30 de julho de 2025

Lançamento de androidx.xr.compose:compose:1.0.0-alpha05 e androidx.xr.compose:compose-testing:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estes commits.

Novos recursos

  • Tornamos a classe de anotação SubspaceComposable pública. (Ic2a34, b/399432430).
  • Dois novos elementos combináveis SpatialExternalSurface que representam esferas de 180 e 360 graus. (I40ef2, b/391705799).
  • Adicionamos SubspaceModifier.aspectRatio (Ide5ab, b/399729509, b/414762147).
  • Adicionamos a API SceneCoreEntity para melhorar a interoperabilidade entre o SceneCore e o Compose para XR. (I50bb3, b/423020989).
  • Foi fornecida a API GravityAlignedsubspace para oferecer suporte ao recurso GravityAligned sem escalonamento (I07359).

Mudanças na API

  • SpatialDialog() vai seguir a configuração de pressionamento de SpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132).
  • Atualize minimumPanelDimension para um novo tamanho de dimensão padrão de Dimensions(0.1f, 0.1f, 0.1f) devido à representação em metros. (Ib852a).
  • Os subespaços e orbitadores agora vão manter o estado interno no espaço inicial e quando o app estiver em segundo plano. No modo de espaço compacto, o Subspace ainda vai configurar a cena em preparação para a mudança para o modo de espaço ampliado. (I40317, b/416037751).
  • SpatialDialogs agora vai manter o estado quando o app estiver em segundo plano. (I6aa56).
  • ApplicationSubspace agora herda a escala e a posição recomendadas do sistema. (I4565f, b/418834194)
  • Adicionamos uma mensagem de erro melhor e acionamos o erro antes quando um SubspaceComposable é usado em um contexto que não é SubspaceComposable. (Iee2ae, b/416484684).
  • Atualização de ExperimentalSubspaceVolumeApi de aviso para erro, porque os avisos geralmente são ignorados quando as APIs de composição são usadas incorretamente. (I427aa, b/424864286).
  • O subespaço e ApplicationSubspace agora são restritos por recommendedContentBoxInFullSpace. Antes, ele era limitado pelo campo de visão do SpatialUser. (I41015, b/423074142).
  • Atualização de SpatialElevation para usar o tamanho mínimo e não mais o tamanho codificado (I2dbe6, b/427785338).
  • Atualizar a forma como aplicamos o scrim ao SpatialAcitivityPanel para que ele seja atualizado quando uma variável-chave for modificada. (I0f64d, b/427999029).
  • Remova VolumeConstraints.Unbounded e defina os valores de restrição padrão como equivalentes. (Ie24ec, b/407938414).
  • SpatialFeatheringSize não é mais público (I1c15b, b/399432430).
  • O Placeable de XR foi renomeado como SubspacePlaceable para diferenciá-lo do Placeable do Compose. (I74874).
  • Removendo as configurações do Orbiter e adicionando shouldRenderInNonSpatial como um novo parâmetro. Além disso, a classe EdgeOffset foi removida, e orbiterOffsetType foi adicionado como um novo parâmetro para consolidar as funções Orbiter(). Além de renomear OrbiterEdge como ContentEdge. (Iebf3d).
  • Renomeamos Measurable como SubspaceMeasurable para diferenciar o tipo do tipo Measurable do Compose. (I9726c).
  • MeasureResult foi renomeado como SubspaceMeasureResult (I9f34d).
  • A API setSubspaceContent foi removida para usar o setContent do Compose com um elemento combinável Subspace. (Ifff4c, b/421427391, b/421427391)
  • MeasurePolicy foi renomeado como SubspaceMeasurePolicy. (I37a9b, b/422553904).
  • Transforme SubspaceSemanticsInfo em uma interface selada, porque não será possível adicionar membros sem os padrões. (I372f9, b/423704068).
  • Atualizamos a documentação de SpatialExternalSurface e renomeamos ContentSecurityLevel como SurfaceProtection (I3c460, b/420982808).
  • Foi fornecido um construtor sobrecarregado para o modificador móvel que permite a ancoragem. (Ic0c70).
  • Adição de mais provedores de posição para dicas, de modo que os desenvolvedores agora possam controlar se a dica é colocada acima, abaixo, à esquerda ou à direita da âncora. Adicionamos uma API que usa uma forma para cursores de texto, permitindo que mais formas personalizadas sejam fornecidas. (Ie513c, b/374766087, b/418854637).
  • CoreEntity foi removido como PublishedApi (Ifee05).

Correções de bugs

  • Correção de um problema em que o SpatialDialog piscava ao ser renderizado. (Ife73c, b/401619909).
  • Correção de um problema em que SpatialDialog não conseguia aplicar uma máscara ao painel de atividades. (I8ca6c, b/367442109)
  • Correção da caixa de diálogo de XR que não mostrava alguns conteúdos (I17cd5, b/418062437).
  • Correção de um problema em que o SpatialPopup era dispensado ao clicar no conteúdo. (If262c, b/417245722).
  • Corrigimos o problema em que, ao encadear resizable().movable(), o SpatialPanel não era redimensionado corretamente para o novo tamanho. (I02ee3, b/422264230).
  • Correção de topBar sobreposto ao menu em SpatialComposeVideoPlayer (Id33bc, b/427168167).
  • Correção do raio do canto que não estava sendo renderizado (I975fe, b/428261830).

Versão 1.0.0-alpha04

7 de maio de 2025

Lançamento de androidx.xr.compose:compose:1.0.0-alpha04 e androidx.xr.compose:compose-testing:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estes commits.

Novos recursos

  • Adicionamos a interface CompositionLocalConsumerSubspaceModifierNode para permitir que tipos personalizados de SubspaceModifier acessem valores locais de composição.
  • Adicionamos uma nova API SpatialPanel que segue o estilo de implementação do Compose AndroidView e descontinua a ViewBased SpatialPanel anterior.
  • Adicionamos o objeto complementar VolumeConstraints.Unbounded, que representa restrições ilimitadas.
  • Adição de SubspaceModifier.onPointSourceParams para permitir uma fonte de áudio espacializado.
  • Um ApplicationSubspace público foi adicionado, oferecendo VolumeConstraints opcional para definir uma área 3D em que o app pode renderizar conteúdo espacial. Por padrão, se nenhuma restrição for especificada, o Subspace será limitado pelo campo de visão atual do SpatialUser em largura e altura. Os usuários podem fornecer restrições a serem usadas se não for possível determinar o campo de visão. Caso contrário, os valores padrão de largura e altura do campo de visão serão usados.
  • Adição de SpatialExternalSurface, que pode ser usado para renderizar conteúdo estereoscópico. SpatialExternalSurface é personalizável com modificadores (exceto alfa) e um efeito de suavização de borda.
  • Adicionamos um novo modificador de subespaço pointerHoverIcon que permite aos usuários definir o ícone do ponteiro espacial.

Mudanças na API

  • Removemos a restrição RequiresApi(34) de todos os pacotes do Jetpack XR. Essa restrição era redundante, já que o Jetpack XR está disponível apenas em dispositivos com nível da API 34 ou mais recente. (Iae0f8)
  • Os projetos lançados com o Kotlin 2.0 exigem o KGP 2.0.0 ou mais recente para serem consumidos (Idb6b5).
  • O processamento de retorno agora funciona em painéis espaciais sem atividades incorporadas. Para que o processamento de retorno funcione, é necessário especificar android:enableOnBackInvokedCallback="true" no manifesto do Android.
  • O processamento de retorno agora funciona em caixas de diálogo espaciais. Para que o processamento de retorno funcione, é necessário especificar android:enableOnBackInvokedCallback="true" no manifesto do Android.
  • Os SpatialPanels baseados no Compose e em visualizações agora podem ser dimensionados com base no conteúdo.
  • Agora, os desenvolvedores podem definir os próprios valores personalizados de SpatialElevationLevel e não estão limitados aos níveis predefinidos.
  • O nível de elevação do Orbiter agora pode ser personalizado com o parâmetro elevation.
  • Agora, o Subspace pode ser limitado pelo campo de visão do SpatialUser em largura e altura por padrão. Se não for possível determinar o campo de visão, os valores padrão de largura e altura do campo de visão serão usados.
  • Adição de novos callbacks onMoveStart e onMoveEnd ao modificador Movable. Os callbacks onMoveStart e onMoveEnd são chamados quando o usuário começa e termina de mover um elemento combinável de subespaço com o modificador móvel.
  • O parâmetro name foi removido de APIs espaciais, como SpatialRow e SpatialPanel. Para depurar árvores de composição espacial, use SubspaceModifier.testTag.
  • Remoção de uma sobrecarga não compatível de SpatialPopup que só tem spatialElevationLevel e content. Use a interface compatível com onDimissRequest.
  • O callback onPoseChange do modificador Movable foi removido. Use onMove.
  • SubspaceModifiers não vai mais aplicar os efeitos se estiverem desvinculados ou em processo de desvinculação.
  • A API SpatialRow atual foi dividida em SpatialRow e SpatialCurvedRow. Se você usava o parâmetro curveRadius de SpatialRow, use SpatialCurvedRow, que oferece o mesmo comportamento.
  • MainPanel e ActivityPanel não têm mais barras de título quando executados em uma imagem de sistema recente.
  • Os modificadores de alfa e escala agora podem ser empilhados e vão multiplicar os valores para o valor final de alfa ou escala aplicado.
  • O callback onPoseChange do modificador Movable foi otimizado para realizar movimentos de pose mais suaves.
  • Os modificadores móveis e redimensionáveis agora vão realizar os callbacks na linha de execução principal para garantir que as mudanças de estado acionem a recomposição.
  • Adicionamos a observação de estado às fases de layout e medição para garantir que as mudanças de estado em SubspaceLayout acionem um novo layout.
  • Atualizações otimizadas da cadeia de modificadores para reutilizar melhor os modificadores atuais.

Correções de bugs

  • A scrimming foi interrompida quando um SpatialDialog é mostrado. (Ic4594).
  • As solicitações de novo layout feitas enquanto os nós modificadores estão desanexados agora serão ignoradas.
  • As fases de novo layout acionadas pelos modificadores Movable e Resizable foram removidas.
  • Correção de uma falha no elemento combinável MainPanel() que ocorria quando uma dimensão era definida como zero, diretamente ou durante um cálculo de layout, por exemplo, um cálculo de SpatialRow/SpatialColumn. Agora, o painel será ocultado. Essa correção aborda especificamente as falhas durante a fase de layout. O redimensionamento do painel para zero por interação do usuário será tratado separadamente. O painel oculto não tem recursos de IU.
  • Correção de um problema com maintainAspectRatio do modificador redimensionável. A proporção deve ser mantida agora.
  • Correção de um problema com Subspaces aninhados em que eles eram posicionados incorretamente para um único frame.
  • Correção de um problema em que os cantos arredondados às vezes não eram aplicados quando deveriam.
  • NestedSubspaces não vai mais aparecer em um frame no local errado.

Versão 1.0.0-alpha03

26 de fevereiro de 2025

Lançamento de androidx.xr.compose:compose:1.0.0-alpha03 e androidx.xr.compose:compose-testing:1.0.0-alpha03, sem mudanças importantes desde a última versão Alfa. A versão 1.0.0-alpha03 contém estes commits.

Versão 1.0.0-alpha02

12 de fevereiro de 2025

Lançamento de androidx.xr.compose:compose:1.0.0-alpha02 e androidx.xr.compose:compose-testing:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estes commits.

Novos recursos

  • O Painel de Atividades agora pode ocultar o conteúdo quando uma caixa de diálogo espacial é ativada.
  • A API Orbiter agora pode ser usada em contextos SubspaceComposable e vai anexar Orbiters ao elemento pai combinável mais próximo baseado em SubspaceLayout.
  • Introdução de LayoutCoordinatesAwareModifierNode para permitir modificadores personalizados com base no posicionamento.
  • Adição de métodos de ciclo de vida de anexação/desanexação a SubspaceModifier.Node.
  • Adição de scaleWithDistance ao modificador móvel. Quando scaleWithDistance está ativado, o elemento de subespaço movido aumenta ou diminui. Ele também vai manter qualquer escala explícita que tinha antes do movimento.

Mudanças na API

  • Remoção de SessionCallbackProvider em favor de SpatialCapabilities.

Outras mudanças

  • Reduzimos minSDK para 24. Todas as APIs Jetpack XR continuam exigindo a API 34 no ambiente de execução.
  • Os construtores Orbiter EdgeOffset.inner, EdgeOffset.outer e EdgeOffset.overlap não são mais métodos @Composable, o que permite que sejam usados em contextos não combináveis.
  • Atualização dos níveis de elevação espacial para corresponder à especificação de UX mais recente.
  • Implemente a interface SubspaceSemanticsInfo em MeasurableLayout.
  • SubspaceModifierElement foi renomeado como SubspaceModifierNodeElement

Correções de bugs

  • Correções para estabilizar a ordenação de SubspaceModifier. O SubspaceModifier deve se comportar de maneira mais confiável. Os modificadores de deslocamento, rotação, escala, movimentação e redimensionamento agora podem ser usados em qualquer ordem.

Versão 1.0.0-alpha01

12 de dezembro de 2024

Lançamento de androidx.xr.compose:compose-*1.0.0-alpha01.

Recursos da versão inicial

  • Versão inicial para desenvolvedores do Jetpack Compose para XR. Use conceitos conhecidos do Compose, como linhas e colunas, para criar layouts de interface espacial em XR, seja para portar um app 2D para XR ou criar um novo app XR do zero. Essa biblioteca oferece elementos de composição de subespaço e espaciais, como painéis espaciais e orbitadores, que permitem colocar sua interface 2D atual do Compose ou baseada em visualizações em um layout espacial. Ele apresenta o elemento de composição de subespaço de volume, que permite colocar entidades do SceneCore, como modelos 3D, em relação à sua interface. Saiba mais neste guia para desenvolvedores:

    • Subspace: esse elemento combinável pode ser colocado em qualquer lugar na hierarquia da interface do app, permitindo que você mantenha layouts para interfaces 2D e espaciais sem perder o contexto entre os arquivos. Isso facilita o compartilhamento de elementos como a arquitetura de apps entre a XR e outros formatos, sem precisar elevar o estado em toda a árvore da interface ou reestruturar o app.

    • SpatialPanel: um painel espacial é um elemento de composição de subespaço que permite mostrar o conteúdo do app. Por exemplo, você pode mostrar a reprodução de vídeos, imagens estáticas ou qualquer outro conteúdo em um painel espacial.

    • Orbitador: é um componente de interface espacial. Ela foi projetada para ser anexada a um painel espacial correspondente e contém itens de navegação e ações necessárias contextuais relacionados a esse painel. Por exemplo, se você criou um painel espacial para mostrar conteúdo de vídeo, pode adicionar controles de mídia dentro de um orbiter.

    • Volume: coloque entidades do SceneCore, como modelos 3D, em relação à sua interface.

  • Layout espacial: é possível criar vários painéis espaciais e colocá-los em um layout espacial usando SpatialRow, SpatialColumn, SpatialBox e SpatialLayoutSpacer. Use SubspaceModifiers para personalizar o layout.

  • Componentes de interface espacial: esses elementos podem ser reutilizados na interface 2D, e os atributos espaciais só vão ficar visíveis quando os recursos espaciais estiverem ativados.

    • SpatialDialog: o painel será empurrado um pouco para trás na profundidade Z para mostrar uma caixa de diálogo elevada.
    • SpatialPopUp: o painel será empurrado um pouco para trás na profundidade Z para mostrar um pop-up elevado.
    • SpatialElevation: SpatialElevationLevel pode ser definido para adicionar elevação.
  • SpatialCapabilities: os recursos espaciais podem mudar conforme os usuários interagem com o app ou o sistema, ou até mesmo pelo próprio app, por exemplo, ao entrar no Espaço Compacto ou Espaço Ampliado. Para evitar problemas, seu app precisa verificar se há LocalSpatialCapabilities.current para determinar quais APIs são compatíveis com o ambiente atual. isSpatialUiEnabled: elementos da interface espacial (por exemplo, SpatialPanel) isContent3dEnabled: objetos 3D isAppEnvironmentEnabled: o ambiente isPassthroughControlEnabled: se o aplicativo pode ou não controlar o estado de visualização externa isSpatialAudioEnabled: áudio espacial

Problemas conhecidos

  • No momento, é necessário um minSDK de 30 para usar o Jetpack Compose para XR. Como alternativa, adicione a seguinte entrada de manifesto <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> para criar e executar com um minSDK de 23.
  • No momento, os apps do Jetpack XR exigem a permissão android.permission.SCENE_UNDERSTANDING no AndroidManifest.
  • Quando um app é iniciado diretamente no Espaço Ampliado usando a propriedade PROPERTY_XR_ACTIVITY_START_MODE no manifesto, as atividades/apps são abertos inicialmente no Espaço Compacto antes de fazer a transição para o Espaço Ampliado.
  • Os glTFs em elementos de composição de volume podem piscar inicialmente no local errado.
  • Usar um SpatialDialog em um painel que foi movido significativamente vai empurrar o conteúdo na direção errada.