The Jetpack XR SDK lets you build immersive XR experiences using modern tools like Kotlin and Compose, as well as previous generation tools such as Java and Views. You can spatialize your UI, load and render 3D models and semantically understand the real world.
If you already have a mobile or large screen app on Android, Jetpack XR SDK extends your app into a new dimension by spatializing existing layouts and enhancing your experiences with 3D models and immersive environments. See our quality guidelines for our recommendations on spatializing your existing Android app.
The Jetpack XR SDK consists of the following libraries. Together, they provide a comprehensive toolkit for building rich and diverse spatialized experiences and are designed to work seamlessly with each other.
- Jetpack Compose for XR: Declaratively build spatial UI layouts that take advantage of Android XR's spatial capabilities.
- Material Design for XR: Build with Material components and layouts that adapt for XR.
- Jetpack SceneCore: Build and manipulate the Android XR scene graph with 3D content.
- ARCore for Jetpack XR: Bring digital content into the real world with perception capabilities.
Jetpack Compose for XR
With Jetpack Compose for XR, you can use familiar Compose concepts such as rows and columns to create spatial UI layouts in XR, whether you're porting an existing 2D app to XR or creating a new XR app from scratch.
This library provides a type of composable: subspace composables such as
spatial panels
and orbiters
, which let you
place your existing 2D Compose or Views-based UI in a spatial layout.
See Develop UI with Jetpack Compose for XR for detailed guidance.
Compose for XR introduces the Volume
subspace composable,
which lets you place SceneCore entities, such as 3D models,
relative to your UI.
Learn how to spatialize your existing Android app or view the API reference for more detailed information.
Material Design for XR
Material Design provides components and layouts that adapt for XR. For example,
if you're building with adaptive layouts, if you update to the latest alpha
of the dependency, with a simple EnableXrComponentOverrides
wrapper, panes will be placed in Spatial Panels
and
navigation rail in an Orbiter
. Learn more about implementing
Material Design for XR.
Jetpack SceneCore
The Jetpack SceneCore library allows you to place and arrange 3D content, defined by entities, relative to each other and your environment. With SceneCore you can:
- Set spatial environments
- Create instances of a
PanelEntity
- Place and animate 3D models
- Specify spatial audio sources
- Add Components to entities that make them movable, resizable, and can be anchored to the real world
The Jetpack SceneCore library also provides support for spatializing applications built using Views. See our guide to working with views for more details.
View the API reference for more detailed information.
ARCore for Jetpack XR
Inspired by the existing ARCore library, the ARCore for
Jetpack XR library provides capabilities for blending digital content with the
real world. This library includes motion tracking, persistent anchors, hit
testing, and plane identification with semantic labeling (for example, floor,
walls, and tabletops). This library leverages the underlying perception stack
powered by OpenXR
, ensuring compatibility with a wide
range of devices and helping to future-proof applications.
View Work with ARCore for Jetpack XR for more detailed information.
Note on Developer Preview
Please note that this release is part of a Developer Preview and these APIs are still under development. See the release notes for known issues:
- Jetpack Compose for XR Release Notes
- ARCore for Jetpack XR Release Notes
- Jetpack SceneCore Release Notes
- Jetpack for SceneCore Runtime Release Notes
If you run into an issue that is not on that list, please report a bug or submit feedback.