Jetpack Compose para XR

Crie de forma declarativa layouts de UI espacial que aproveitam 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
23 de setembro de 2026 - - 1.0.0-beta01 -

Declarar dependências

Para adicionar uma dependência ao XR Compose, inclua o repositório Maven do Google no 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-beta01"

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

Kotlin

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

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

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-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 estes commits.

Mudanças na API

  • Removemos DragPolicy, que estava descontinuado. Use SubspaceModifier.movable(). (I108d4).
  • Removemos o ResizePolicy descontinuado e os usos dele em SpatialPanel e SpatialExternalSurface. Remova 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 acompanhamento de tom de forma independente. (Ie9e86).
  • A capacidade de aceitar valores nulos 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 do Orbiter que usa um OrbiterPoseProvider foi descontinuada em favor da que usa SpatialAlignment. (I4d12b)
  • Agora, o SpatialActivityPanel exige um SpatialActivityPanelController (instanciado usando rememberSpatialActivityPanelController) para iniciar e gerenciar atividades incorporadas. (Id25c6).
  • O parâmetro upDirection foi removido de rotateToLookAtUser e parâmetros de restrições de rotação foram adicionados (isYawUpdateEnabled e pitchLimits). (I1370a)

Correções de bugs

  • Correção de vários problemas de InteractionPolicy. Ocorria uma falha se um evento de entrada acontecesse no momento em que o elemento combinável ou filho (por exemplo, um Orbiter) iniciava uma sequência de descarte. Também corrige um problema em que uma criança recebia eventos de passar o cursor. (Ifc477).
  • Redução do tamanho do painel no 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 estes commits.

Mudanças na API

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

Correções de bugs

  • Correção do problema em que 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 estes commits.

Mudanças na API

  • Remoção das APIs ComponentOverride (I820c4)
  • As APIs GltfAnimation e SpatialGltfModelAnimation foram marcadas como experimentais. Algumas propriedades foram transformadas em getters. (I8d689, b/524771027)
  • Corrigimos o comportamento geral da densidade estabelecendo que a conversão entre metros e pixels seja constante. O Meter.kt foi descontinuado. Agora, 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 dimensão e posição usando pontos flutuantes em SubspaceAssertions.kt. O comportamento de tolerância padrão (0.5.dp) está totalmente documentado. (I266cb, b/521491915).
  • Adição de sobrecarga móvel com parâmetro movePolicy e descontinuação de transformingMovable e movable (Ic88c1, b/481781189)
  • Adicionamos novas variantes não interativas do item de lista padrão e do item de lista segmentada que seguem as especificações do Material Expressive. A versão não expressiva foi descontinuada. (Ide4de, b/491994186).
  • No Subspace, o parâmetro allowUnboundedSubspace foi descontinuado e está oculto. Agora, o comportamento sem limites pode 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).
  • Session.create convertido em uma função de suspensão. (I5d27f).
  • Adição de SubspaceModifier.spatializedAudioOutput, que permite espacializar a reprodução de áudio usando ExoPlayer ou SoundEffectPlayer (I46697, b/489421980, b/497867019).
  • Atualizamos ComponentActivity.requestHomeSpace() e requestFullSpace() para retornar SpaceRequestResult na verificação de status. (If1672)
  • AnchorEntity foi atualizado para ser chamado de AnchorSpace (Ifa95e, b/513619219).
  • Método fromResource sem restrições de SpatialGltfModelSource (I1f5a1, b/503047416).
  • Os membros de SubspaceSemanticsMatcher são públicos: a propriedade description, métodos de fábrica complementares (expectValue, keyIsDefined, keyNotDefined), funções de membro (matches, matchesAny) e 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)
  • Renomeou position para align em SpatialAlignment e removeu métodos individuais de ajuste direcional em favor de uma API align unificada. (I9bdb2, b/479805937).
  • As APIs do modo de espaço descontinuadas foram removidas de SpatialConfiguration. (I1ef5c, b/458712461)
  • Lançamento de SubspaceSemanticsConfiguration. É uma configuração de propriedades semânticas 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 substrings por padrão. (I08214)
  • Adição de um 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 dele 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)

  • Esclarecemos a documentação de ComponentActivity.requestHomeSpace e ComponentActivity.requestFullSpace sobre comportamento de suspensão, cancelamento e simultaneidade. Testes atualizados 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 estes commits.

Mudanças na API

  • Descontinuamos ResizePolicy e o antigo modificador redimensionável, substituindo-o por uma nova sobrecarga SubspaceModifier.resizable e SubspaceModifier.transformingResizable. (I9e4bc).
  • APIs SpatialGltfModel atualizadas: adicionamos suporte para carregar modelos de recursos usando SpatialGltfModelSource.fromResource. Renomeamos a velocidade para 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).
  • Movemos e renomeamos a variável protegida targetCurrentPose para a variável local currentTargetPoseMeter. (Ia557c).
  • Atualize os kdocs SpatialPanel e SpatialExternalSurface para incluir onde o objeto é renderizado dentro do tamanho do layout (I72104).
  • Encapsulamos a lógica de carregamento SpatialGltfModel em SpatialGltfModelState e esclarecemos o comportamento de falha. (Ibe98b).
  • Esclarecimento de depth em kdocs 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 estes commits.

Mudanças na API

  • Introduzimos transformingMovable para o movimento 3D padrão processado pelo sistema e 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 a veiculação. (Iafbae).
  • Atualização de InteractionPolicy para um Interface (I0ff30).
  • O Compose compileSdk foi atualizado para a API 37. Isso significa que é necessária uma versão mínima do AGP 9.2.0 ao usar o Compose. (Id45cd)
  • Kdocs de Size atualizados (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 estes commits.

Mudanças na API

  • A API Orbiter ainda vai passar por 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 ao parâmetro parent da chamada GltfModel.create para que os glTFs sejam renderizados.
  • Adição da API SpatialGltfModel para permitir que os desenvolvedores adicionem Gltfs aos apps do Compose para XR. Os desenvolvedores também podem consultar animações e nós nos modelos Gltf. (I8b542, b/495422586)
  • Muda SceneCoreEntitySizeAdapter de classe para interface (I5a784, b/475292310).
  • SurfaceProtection foi renomeado como SpatialExternalSurfaceProtection Kdocs de SpatialExternalSurface atualizados (Ifad0a, b/485231082).
  • A currentWindowAdaptiveInfo foi descontinuada e a V2 foi lançada (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. Esse modificador funciona bem, no momento, para SpatialPanels e SpatialExternalSurface. No entanto, a intenção é que eles sejam compatíveis 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 até que sejam realizados mais testes. (Ibf003, b/466090694)
  • DeviceTrackingMode.LAST_KNOWN foi renomeado como SPATIAL_LAST_KNOWN (com um substituto descontinuado), INERTIAL_LAST_KNOWN foi adicionado para rastreamento de 3DoF e TRACKING_DEGRADED foi adicionado 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. Remoção do valor padrão de LayoutDirection (I9d74e)

Correções de bugs

  • Adicionamos exemplos de código e documentação 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 a API SpatialGltfModel e as APIs SpatialGltfModelAnimation para renderizar glTFs e controlar animações. Mudamos SpatialGltfModelState para AutoCloseable. Agora, ele 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 até que sejam realizados mais testes. (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. Atualizamos o valor de suavização padrão SpatialExternalSurface para nulo, o que imita a funcionalidade antiga ZeroFeatheringEffect. (I5fdaa, b/460426800)
  • Contato removido: onPointSourceParamsAvailable. Uma API de espacialização de áudio diferente será disponibilizada em breve. (I86507, b/458513439)
  • Adicionado 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 fazer com que os apps falhem 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 nas versões subsequentes. 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á lacrado 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 de sobrecarga SubspaceLayout (Idd30a)
  • SubspaceModifier.lookAtUser foi renomeado como rotateToLookAtUser, e o parâmetro up foi renomeado como upDirection. (Icafb8).
  • Transformar SpatialRow em uma função inline (Ia2f20).
  • Transformar SpatialColumn em uma função in-line (I681be).
  • API de outdoor 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

03 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 esteja sempre 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)
  • Adicionada sobrecarga de tamanho e modificador requiredSize com largura, altura e profundidade como valores Dp. (I92f79).
  • A interface ParentLayoutParamsModifier agora estende DelegatableSubspaceNode. (I1a6d4)
  • O ApplicationSubspace foi descontinuado em favor da API Subspace.
    • O comportamento da API Subspace foi alterado para fornecer apenas um subespaço em todo o aplicativo na postura e escala recomendadas.
    • A API PlanarEmbeddedSubspace é introduzida para fornecer subespaços incorporados em contextos 2D. (Id3343)
  • Adição da flag shouldAutoInvalidate à API SubspaceModifier.Node. (I93902).
  • Adicionado required(Size|Width|Depth|Height) em APIs que permitem aos desenvolvedores restringir o tamanho de um @SubspaceComposable a um intervalo específico, ignorando as restrições de medição recebidas do elemento pai. (Ifaa78).
  • Adição de SubspaceModifier.onSizeChanged, que oferece um callback simples e focado para os desenvolvedores reagirem 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 em Compose. (Icc91f).
  • Introdução da API combinável SpatialGltfModel para renderizar facilmente glTFs (Iade67).

Correções de bugs

  • Correção de um bug de layout em SceneCoreEntity. Agora ele vai respeitar as restrições corretamente. (I11bb8)
  • Reduzir os módulos jxr-compose 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

  • Mudamos ResizePolicy para aceitar onResizeStart, onResizeUpdate e onResizeEnd. (I7e21f).

Correções de bugs

  • Evita falhas 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)
  • Introduzimos o 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 direções de layout LTR e RTL. (I7db38, b/436289959)
  • Adicionamos uma interface básica para SubspaceModifier.Node para melhorar a segurança de tipo e a usabilidade das interfaces de extensão, como
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (interno) (Iede00, b/440599394, b/440599394)
  • Remover restrições de SpatialExternalSurface (I33315, b/439646773)
  • Introduza SubspaceModifier aos elementos combináveis do Subspace e substitua o parâmetro de restrições por SubspaceModifier com SubspaceModifiers relacionados 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 agora que DragPolicy() e ResizePolicy() fazem parte da API SpatialPanel e SpatialExternalSurface (I397bf, b/437924639).
  • Adicionamos suporte para LayoutDirection em layouts espaciais. O elemento combinável usando SpatialAlignment agora posiciona corretamente os elementos em 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, depthIn SubspaceModifiers que permitem definir restrições mínimas e máximas exatas 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)
  • Adição de SubspaceModifier.aspectRatio (Ide5ab, b/399729509, b/414762147).
  • Adição da API SceneCoreEntity para melhorar a interoperabilidade entre SceneCore e o Compose para XR. (I50bb3, b/423020989)
  • Foi fornecida a API GravityAlignedsubspace para oferecer suporte ao recurso GravityAligned e sem escalonamento (I07359).

Mudanças na API

  • O SpatialDialog() vai seguir a configuração de pressionamento de SpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)
  • Atualize minimumPanelDimension para um novo tamanho padrão de dimensã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 da casa 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 reter o estado quando o app estiver em segundo plano. (I6aa56).
  • ApplicationSubspace agora vai herdar a escala e a posição recomendadas do sistema. (I4565f, b/418834194)
  • Adição de uma mensagem de erro melhor e acionamento do erro mais cedo quando um SubspaceComposable é usado em um contexto não SubspaceComposable. (Iee2ae, b/416484684)
  • Atualização de ExperimentalSubspaceVolumeApi de "Aviso" para "Erro" porque os avisos costumam ser ignorados ao usar APIs combináveis de maneira incorreta. (I427aa, b/424864286)
  • O subespaço e ApplicationSubspace agora são restritos por recommendedContentBoxInFullSpace. Antes, ele era limitado pelo campo de visão de SpatialUser. (I41015, b/423074142)
  • Atualização de SpatialElevation para usar o tamanho mínimo e não mais o tamanho codificado (I2dbe6, b/427785338).
  • Atualize como fazemos o scrim do SpatialAcitivityPanel para atualizar quando uma variável de chave é modificada. (I0f64d, b/427999029)
  • Remova VolumeConstraints.Unbounded e defina os valores de restrição padrão como o equivalente. (Ie24ec, b/407938414)
  • SpatialFeatheringSize não é mais público (I1c15b, b/399432430).
  • O XR Placeable foi renomeado como SubspacePlaceable para diferenciá-lo do Placeable do Compose. (I74874).
  • Remoção das configurações do Orbiter e adição de shouldRenderInNonSpatial como um novo parâmetro. Além disso, remova a classe EdgeOffset e adicione orbiterOffsetType como um novo parâmetro para consolidar as funções Orbiter(). Além de renomear OrbiterEdge como ContentEdge. (Iebf3d).
  • Renomeado Measurable para SubspaceMeasurable para diferenciar o tipo do tipo Measurable do Compose. (I9726c).
  • MeasureResult foi renomeado como SubspaceMeasureResult (I9f34d).
  • A API setSubspaceContent foi removida em favor do uso do 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)
  • Atualização da documentação de SpatialExternalSurface e renomeação de ContentSecurityLevel para SurfaceProtection (I3c460, b/420982808).
  • Fornecido construtor sobrecarregado para modificador móvel que permite ancoragem. (Ic0c70)
  • Adicionamos mais um provedor de posição para dicas. Agora, os desenvolvedores podem controlar se a dica é colocada acima, abaixo, à esquerda ou à direita da âncora. Adicione uma API que receba uma forma para acentos circunflexos, para que mais formas personalizadas possam ser fornecidas. (Ie513c, b/374766087, b/418854637).
  • CoreEntity foi removido como PublishedApi (Ifee05).

Correções de bugs

  • Correção de um problema em que SpatialDialog piscava ao ser renderizado. (Ife73c, b/401619909)
  • Correção de um problema em que SpatialDialog não podia encobrir o 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 quando clicado dentro do 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 da sobreposição de topBar com o 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

  • Adicionada a interface CompositionLocalConsumerSubspaceModifierNode para permitir que tipos SubspaceModifier personalizados acessem valores locais de composição.
  • Adicionamos uma nova API SpatialPanel que segue o estilo de implementação do AndroidView do Compose e descontinua o ViewBased SpatialPanel anterior.
  • Adicionamos o objeto complementar VolumeConstraints.Unbounded, que representa restrições ilimitadas.
  • Adicionamos SubspaceModifier.onPointSourceParams para permitir uma fonte de áudio espacializada.
  • Um ApplicationSubspace público foi adicionado, oferecendo VolumeConstraints opcionais para definir uma área 3D em que o app pode renderizar conteúdo espacial. Por padrão, se nenhuma restrição for especificada, o subespaço será limitado pelo campo de visão atual da 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.
  • Adicionado SpatialExternalSurface, que pode ser usado para renderizar conteúdo estereoscópico. SpatialExternalSurface pode ser personalizado com modificadores (exceto alfa) e um efeito de esmaecimento 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 34 ou mais da API. (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 volta agora funciona em painéis espaciais sem atividades incorporadas. Para que o processamento de volta funcione, é necessário especificar android:enableOnBackInvokedCallback="true" no manifesto do Android.
  • O processamento de volta agora funciona em caixas de diálogo espaciais. Para que o processamento de volta funcione, é necessário especificar android:enableOnBackInvokedCallback="true" no manifesto do Android.
  • Os SpatialPanels baseados em Compose e em visualização agora podem se dimensionar com base no conteúdo.
  • Agora, os desenvolvedores podem definir seus próprios valores de SpatialElevationLevel personalizados e não estão limitados aos níveis predefinidos.
  • Agora é possível personalizar o nível de elevação do Orbiter usando o parâmetro elevation.
  • Por padrão, o subespaço agora pode ser limitado pelo campo de visão do SpatialUser em largura e altura. Se não for possível determinar o campo de visão, os valores padrão de largura e altura serão usados.
  • Adição dos 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 sem suporte 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 separados ou em processo de separação.
  • A API SpatialRow atual foi dividida em SpatialRow e SpatialCurvedRow. Se você usava o parâmetro curveRadius do SpatialRow, agora use SpatialCurvedRow, que oferece o mesmo comportamento.
  • MainPanel e ActivityPanel não têm mais barras de título quando executados em uma imagem do sistema semelhante e recente.
  • Os modificadores Alfa e de escala agora podem ser combinados e vão multiplicar os valores para o valor Alfa ou de escala final aplicado.
  • O callback onPoseChange do modificador Movable foi otimizado para realizar movimentos de postura mais suaves.
  • Os modificadores móveis e redimensionáveis agora vão executar os callbacks na linha de execução principal para garantir que as mudanças de estado acionem a recomposição.
  • Adição da 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 tela de escurecimento para quando um SpatialDialog é mostrado. (Ic4594)
  • As solicitações de readequação feitas enquanto os nós modificadores estão separados agora serão ignoradas.
  • Removidas as fases de relayout acionadas pelos modificadores Movable e Resizable.
  • Corrigimos uma falha no elemento combinável MainPanel() que ocorria quando uma das dimensões era definida como zero, diretamente ou durante um cálculo de layout, por exemplo, um cálculo de SpatialRow/SpatialColumn. Em vez disso, o painel vai ficar oculto. Observação: essa correção aborda especificamente 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 acessibilidade da interface.
  • Correção do problema com maintainAspectRatio do modificador redimensionável. A proporção será mantida.
  • Correção de um problema com subespaços aninhados que eram posicionados incorretamente em um único frame.
  • Correção de um problema em que as bordas arredondadas às vezes não eram aplicadas quando deveriam ser.
  • NestedSubspaces não vai mais aparecer por 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 significativas 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 escurecer 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 combinável pai mais próximo com base 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 do subespaço movido aumenta ou diminui. Ele também vai manter qualquer escala explícita que tinha antes do movimento.

Mudanças na API

  • SessionCallbackProvider foi removido em favor de SpatialCapabilities.

Outras mudanças

  • Reduzimos minSDK para 24. Todas as APIs do Jetpack XR ainda exigem a API 34 no tempo 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.
  • Atualize os 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. SubspaceModifier vai funcionar de maneira mais confiável. Agora, os modificadores de deslocamento, rotação, escalonamento, capacidade de movimentação e redimensionamento 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

  • Lançamento 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 portando um app 2D para XR ou criando um novo app XR do zero. Essa biblioteca oferece elementos combináveis espaciais e de subespaço, como painéis espaciais e orbitadores, que permitem colocar sua interface 2D baseada em Views ou Compose em um layout espacial. Ele apresenta o elemento combinável do subespaço de volume, que permite posicionar 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 manter 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 realidade estendida e outros formatos sem precisar elevar o estado por toda a árvore da interface ou reprojetar o app.

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

    • Orbitador: um orbitador é um componente espacial de UI. Ele foi projetado para ser anexado a um painel espacial correspondente e contém itens de navegação e ação contextual relacionados a esse painel. Por exemplo, se você criou um painel espacial para mostrar conteúdo de vídeo, é possível adicionar controles de reprodução de vídeo dentro de um orbiter.

    • Volume: posicione 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 seu layout.

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

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

Problemas conhecidos

  • No momento, um minSDK de 30 é necessário 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 solicitação da 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/aplicativos são abertos inicialmente no Espaço Compacto antes de fazer a transição para o Espaço Ampliado.
  • Os glTFs em elementos combináveis 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.