ARCore
ARCore is Google's augmented reality (AR) software development kit (SDK) that enables developers to build immersive experiences by overlaying digital content onto the physical world, using a device's camera, motion sensors, and processors to track movement, understand environments, and estimate lighting conditions.[1] Initially released as a developer preview for Android devices in August 2017, it achieved stable version 1.0 in February 2018, expanding support to over 13 initial smartphone models including Google Pixel, Samsung Galaxy S8, and ASUS ZenFone AR.[2] Today, ARCore offers cross-platform APIs compatible with Android (version 7.0 and later on qualified devices), iOS (version 11.0 and later on supported devices), Unity, Unreal Engine, and web browsers via WebXR, making it accessible in more than 100 countries worldwide.[1][3] At its core, ARCore facilitates three primary functionalities: motion tracking, which combines visual feature detection from the camera with inertial measurement unit (IMU) data to precisely locate the device in 3D space; environmental understanding, which scans and classifies surfaces (such as floors, walls, and tables) to create a virtual mesh representation of the surroundings; and light estimation, which analyzes ambient lighting to ensure virtual objects appear realistically illuminated and shadowed.[3] These features allow for stable placement of AR elements, such as anchoring 3D models to real-world positions that persist as users move.[3] Beyond these fundamentals, ARCore has evolved to include advanced capabilities like the Depth API, which provides per-pixel depth maps for realistic occlusion effects where virtual objects interact naturally with physical ones; the Scene Semantics API, which uses machine learning to identify and label semantic elements in outdoor environments (e.g., sky, roads, buildings);[4] and Cloud Anchors, enabling shared AR sessions across multiple users and devices for collaborative experiences.[5] The Geospatial API, introduced in 2022, further extends functionality by integrating with Google Maps and Street View data to position AR content at precise Earth-scale locations, supporting applications in navigation, tourism, and urban planning across Android and iOS.[6] Additionally, ARCore supports session recording and playback for testing, as well as augmented image tracking for recognizing and augmenting printed images or objects.[1] ARCore's open-source nature and integration with Google Play Services for AR ensure automatic updates and broad device compatibility, powering hundreds of applications in gaming, education, retail, and enterprise sectors, while competing with platforms like Apple's ARKit.[1] Its ongoing updates, such as enhanced machine learning models for better environmental detection, continue to improve accuracy and performance on billions of compatible mobile devices globally.[7]Introduction and History
Overview
ARCore is Google's augmented reality (AR) software development kit (SDK) designed for building immersive AR experiences on mobile devices, enabling the seamless integration of virtual content with the real world through the device's camera and sensors.[1] It allows developers to create applications that overlay digital elements onto physical environments, fostering interactive and context-aware experiences in gaming, education, retail, and enterprise applications.[3] The primary purpose of ARCore is to empower developers to utilize motion data, camera input, and device sensors for core AR functionalities, such as tracking the user's position and orientation, understanding the surrounding environment, and estimating lighting conditions to render realistic digital overlays.[3] At a high level, ARCore's architecture is built on cross-platform APIs that integrate with Google Play Services for AR on Android devices, while also supporting development in environments like Unity, Unreal Engine, and web-based frameworks for broader accessibility.[1] This software-centric approach has evolved AR development from reliance on specialized hardware to widespread availability on standard mobile hardware, with automatic updates delivered through Google Play to maintain compatibility without manual intervention.[8] As of 2023, ARCore was available in over 100 countries, powering AR experiences across apps, games, and professional tools on 1.4 billion Android devices worldwide.[1][9] By leveraging features like motion tracking and environmental understanding, it enables developers to place and interact with virtual objects in real-time physical spaces.[3]Development Timeline
ARCore originated as the successor to Google's Project Tango, an experimental augmented reality platform launched in June 2014 that relied on specialized hardware sensors for motion tracking and depth perception but faced limitations in device adoption. Project Tango was officially discontinued in December 2017, with support ending on March 1, 2018, paving the way for a more accessible software-focused approach.[10] Google announced ARCore on August 29, 2017, positioning it as a software-only SDK to enable AR experiences on standard Android devices without requiring custom hardware, thereby broadening developer and user accessibility compared to Tango.[11] The platform's initial 1.0 release occurred on February 23, 2018, supporting a select group of Android devices through integration with Google Play Services for AR, marking the shift toward mainstream mobile AR development.[12] In May 2018, during Google I/O, ARCore introduced the Cloud Anchors API, which allowed multiple users to share persistent AR content in shared physical spaces across compatible devices, fostering collaborative experiences.[13] This update expanded ARCore's scope beyond single-user applications. The following year, in February 2019, the Augmented Faces API launched, providing a high-fidelity 468-point 3D face mesh for overlaying effects and animations on detected human faces via front-facing cameras.[14] September 2019 brought significant cross-platform progress with official iOS support through Unity's AR Foundation framework, enabling developers to build unified AR apps for both Android and iOS ecosystems and reaching over a billion users.[15] In October 2020, ARCore enhanced shared functionality with persistent Cloud Anchors, allowing anchored AR content to remain resolvable for up to 365 days, alongside expansions to additional Android devices for greater adoption.[16] The ARCore Geospatial API debuted in May 2022 at Google I/O, integrating with Google Maps to anchor AR content to real-world locations using visual positioning systems, enabling global-scale experiences in over 87 countries.[17] At Google I/O 2023, enhancements to this API included the Streetscape Geometry API for accessing 3D street data, the Geospatial Depth API for improved environmental sensing, and the Scene Semantics API for semantic understanding of surroundings like roads and buildings.[9] In 2024, ARCore powered interactive AR demonstrations at CES, including the Android Virtual Guide experience built with Geospatial Creator for navigating exhibit spaces.[18] As of 2025, recent ARCore updates, such as version 1.45.0's enhanced torch mode support for low-light environments and ongoing WebXR integration for browser-based AR, continue to improve functionality, alongside continued partnerships like the one with the Singapore Tourism Board for location-based AR tours launched in 2023. In late 2025, version 1.51.0 introduced further enhancements, including updated minimum SDK version 23 and Vulkan rendering samples.[19][20][21][22] Throughout its evolution, ARCore has transitioned from an Android-exclusive tool to a cross-platform solution supporting Android, iOS, Unity, and Web environments, emphasizing developer tools for both consumer and enterprise applications such as shared collaboration and geospatial anchoring.[1]Fundamental Technologies
Motion Tracking
ARCore's motion tracking system utilizes the device's inertial measurement unit (IMU), which includes accelerometers and gyroscopes, alongside the camera to determine the device's position and orientation relative to the real world. This enables six degrees of freedom (6DoF) tracking, encompassing three translational movements along the x, y, and z axes and three rotational movements corresponding to pitch, yaw, and roll. By continuously monitoring these parameters, ARCore ensures that virtual content aligns accurately with the physical environment as the user moves.[23] The tracking process relies on visual-inertial odometry (VIO), a simultaneous localization and mapping (SLAM)-based algorithm that fuses visual data from the camera—such as detected feature points—with inertial data from the IMU to estimate the camera's pose in real time. This fusion compensates for the limitations of individual sensors: the camera provides spatial context through image features, while the IMU delivers high-frequency motion cues to bridge gaps between camera frames. As ARCore processes successive frames, it refines pose estimates to correct for accumulated errors, maintaining stability during typical user interactions.[23] ARCore achieves real-time pose estimation at approximately 60 frames per second (FPS), supporting smooth AR experiences on compatible devices. In benchmark evaluations, the system's accuracy demonstrates low final drift errors, such as 0.09 meters in indoor hallways and 0.12 meters in corridors for short walking sessions, highlighting its precision in controlled environments. These metrics underscore ARCore's capability for centimeter-level positioning over brief periods, essential for immersive applications.[24] However, motion tracking can exhibit drift over extended sessions, particularly in low-texture environments like plain walls or uniform surfaces where feature points are scarce, leading to reduced pose reliability. Mitigation involves leveraging anchors tied to detected environmental features, which stabilize tracking by anchoring virtual elements to persistent real-world points. This approach helps counteract gradual inaccuracies without relying solely on raw motion data.[23] As a foundational component, motion tracking is prerequisite for all AR experiences in ARCore, enabling the stable initial placement of virtual objects before further enhancements like environmental integration for anchor placement.[23]Environmental Understanding
ARCore's environmental understanding capability allows it to detect and map real-world surfaces and geometry, enabling virtual objects to interact realistically with the physical environment through plane detection and point cloud generation. Plane detection identifies horizontal surfaces like floors and tabletops, as well as vertical surfaces such as walls, by analyzing clusters of feature points derived from camera images. These planes are provided with boundary polygons for precise placement of augmented content and are classified into categories based on their normal vector orientation, including horizontal upward-facing planes (e.g., floors or tabletops), horizontal downward-facing planes (e.g., ceilings), and vertical planes (e.g., walls).[25][23][26] Complementing plane detection, ARCore generates a sparse point cloud consisting of oriented 3D feature points captured from the camera feed, which is continuously updated in real-time using motion tracking data to build an environmental model. This point cloud supports surface angle estimation and overall scene reconstruction, with planes categorized as either trackable (actively refined with high confidence) or estimated (preliminary based on initial observations). The process relies on simultaneous localization and mapping (SLAM) techniques that combine visual features with inertial sensor inputs for robust environmental representation.[23][26] In practice, this functionality facilitates anchoring virtual objects to detected planes, ensuring they remain stably positioned relative to real-world geometry as the device moves. It enables basic interactions, such as placing objects on horizontal surfaces or aligning them against vertical ones, enabling basic collision detection—for instance, preventing virtual items from intersecting with mapped planes. Detection performance is efficient in well-textured environments, typically identifying planes within seconds of sufficient camera coverage, but it requires visual texture for accuracy and may falter in feature-poor settings like plain walls or low-light conditions. However, since ARCore 1.45 (August 2024), developers can enable the device's torch mode to improve performance in low-light conditions.[23][26][27][19]Light Estimation
ARCore's light estimation feature analyzes the real-world environment to provide photometric data that enables realistic rendering of virtual objects, ensuring they blend seamlessly with the physical scene by matching lighting conditions. This API estimates key lighting parameters from camera imagery, allowing developers to apply physically-based rendering (PBR) techniques for shadows, reflections, and overall illumination. By mimicking ambient and directional light cues, it enhances visual immersion in augmented reality applications.[28] The main directional light estimation identifies the primary light source's direction, intensity, and color in the environment. Direction is represented as a normalized 3D vector, typically pointing from the light source toward the camera, while intensity and color are provided as RGB values in linear space, derived from the environmental HDR lighting mode. This data supports casting accurate shadows and specular highlights on virtual objects, assuming a single dominant light source such as sunlight or an indoor lamp. Color correction factors, including RGB scale and pixel intensity in gamma space, further adjust for the scene's overall tone, approximating color temperature effects without explicit Kelvin values.[29][28] Ambient lighting is modeled using second-order spherical harmonics, which capture indirect diffuse illumination from all directions through 27 coefficients (9 per RGB channel). These coefficients enable the approximation of soft shadows and subtle reflections on virtual surfaces, contributing to a more natural appearance under mixed lighting conditions. The spherical harmonics exclude the main directional light's contribution, focusing instead on the surrounding environment's radiance for global illumination effects.[29][28] The estimation process relies on machine learning applied to successive camera frames, detecting highlights, shadows, and other visual cues to infer lighting parameters in real time. Updates occur dynamically as the scene or camera view changes, with a timestamp indicating when the estimate was last revised, typically aligning with frame processing for responsive adjustments. This integrates briefly with environmental understanding by leveraging detected surfaces for contextual light probe placement, though it primarily operates on photometric analysis.[28][29] In practice, the light estimation data feeds into rendering engines like Unity, where it drives PBR pipelines by supplying directional light properties for direct illumination and spherical harmonics for ambient occlusion. For instance, Unity's AR Foundation uses this to generate HDR cubemaps for environmental reflections on glossy materials, significantly improving the realism of virtual objects in mixed-reality scenes. Developers enable modes such as Environmental HDR for advanced features or Ambient Intensity for simpler intensity scaling, selecting based on performance needs.[30] Despite its effectiveness, light estimation has limitations, including reduced accuracy in highly dynamic lighting scenarios where light sources move rapidly or multiple strong lights are present, as it assumes a single main directional source. The HDR mode also imposes additional computational overhead due to cubemap generation, potentially impacting frame rates on lower-end devices. These constraints highlight the need for fallback strategies in varying real-world conditions.[28][29]Advanced Sensing and Interaction
Depth API
The ARCore Depth API enables developers to access depth information from the device's camera, generating depth maps that represent the distance of real-world objects from the camera in a scene. This pixel-level depth data enhances the realism of augmented reality experiences by allowing virtual content to interact more naturally with the physical environment, such as through accurate occlusion and spatial awareness. The API leverages either hardware sensors or software-based estimation to produce these maps, which are synchronized with the camera's RGB images for seamless integration into rendering pipelines.[31] ARCore supports two primary depth modes: a full-depth mode, which generates dense depth maps using software estimation from device motion (provided in AUTOMATIC mode when hardware is unavailable), and a raw depth mode, which provides sparse, confidence-based depth maps directly from compatible depth sensors like time-of-flight (ToF) hardware. In full-depth mode, the system employs algorithms such as patch-match stereo to estimate depth across the entire image based on visual features tracked over multiple frames, requiring user movement for optimal results. The raw depth mode (Config.DepthMode.RAW_DEPTH_ONLY) delivers higher-accuracy sparse data at specific pixels, accompanied by a confidence map indicating reliability (values from 0 to 255, with 255 denoting highest confidence), making it suitable for devices with integrated depth sensors. Developers can enable the automatic mode (Config.DepthMode.AUTOMATIC) to let ARCore select the best option based on device capabilities and scene conditions. As of October 2025, the Depth API is supported on over 87% of active ARCore-compatible devices.[32][33][34]
Depth maps are typically provided at resolutions matching lower-end camera configurations for performance, up to 720p on supported devices, and updated at 30 frames per second to align with ARCore's tracking rate. The effective range spans 0 to 65 meters, with the highest accuracy achieved between 0.5 and 5 meters, where depth values are represented as 16-bit unsigned integers in millimeters for precise distance calculations. Beyond this optimal range, accuracy decreases due to factors like sensor limitations or estimation errors in low-texture areas.[31][34]
Key applications of the Depth API include real-time occlusion, where virtual objects are rendered behind real-world elements based on depth comparisons in shaders, improving visual fidelity without manual geometry modeling. It also supports enhanced interactions, such as collision detection for virtual elements with real surfaces and improved hand tracking by providing 3D context for gesture recognition, enabling more responsive user inputs like pointing or grabbing in AR scenes. For instance, developers can perform depth hit-tests to place anchors on non-planar surfaces, facilitating precise object positioning.[33]
In implementation, the Depth API integrates with ARCore's point cloud data by allowing developers to convert depth pixels into world-space 3D points using the camera's intrinsics and pose, creating denser environmental representations for advanced rendering or physics simulations. Depth images are acquired via Frame.acquireDepthImage16Bits() and can be transformed for non-frontal views by applying the camera's rotation and translation from the AR session's tracking data, ensuring alignment with the overall scene geometry. This supports custom shaders for effects like depth-aware blending, where functions such as DepthGetMillimeters() extract distances for GPU-accelerated processing.[33][35]
Recent enhancements include the introduction of 16-bit depth support in ARCore SDK 1.31, extending the maximum range to 65 meters while maintaining compatibility with machine learning models for refined estimation in challenging conditions like low motion. Additionally, integration with Jetpack XR in 2025 versions provides smoothed raw depth outputs, improving usability for on-device ML-driven applications without sacrificing performance. These updates build on the raw depth mode added in 2021, which offers unfiltered sensor data for higher precision in supported hardware.[36]
Anchors and Cloud Anchors
In ARCore, anchors serve as virtual reference points that tie digital content to specific positions and orientations in the real world, leveraging the device's motion tracking and environmental understanding to maintain stability as the user moves. Local anchors are created either instantly by specifying a pose in the AR session's world space or by attaching to detected planes for surface-aligned placement, ensuring virtual objects remain fixed relative to the physical environment during the current session. These anchors adjust dynamically to updates in the ARCore world model, which incorporates data from motion tracking and features like the Depth API for enhanced stability in complex scenes.[27] Cloud Anchors extend this functionality to enable shared and persistent AR experiences across multiple devices and sessions by hosting anchor data on the ARCore API cloud endpoint. In the host-resolve model, a hosting device uploads an anchor's pose and associated environmental data to generate a unique Cloud Anchor ID, which is then shared with other devices—typically via a backend service like Firebase—to allow them to resolve and align to the same real-world location. This synchronization relies on visual feature matching between devices in the shared physical space, supporting multi-user AR applications without requiring precise GPS coordination.[5][37] Local anchors persist only for the duration of the AR session and are stored on the device, limiting their use to single-user scenarios, whereas Cloud Anchors provide cross-session persistence, with lifetimes configurable up to 365 days when using OAuth authentication, enabling repeated access to the same virtual placements. For multi-user interactions, Cloud Anchors facilitate real-time collaboration, such as in multiplayer games where participants co-place virtual objects or in collaborative design tools for shared virtual prototypes. However, Cloud Anchors depend on a stable internet connection for hosting and resolving, introducing latency and potential failures in low-network conditions, and they require proper authorization through a Google Cloud project to access the ARCore API.[5][37][38]Specialized APIs
Geospatial API
The ARCore Geospatial API enables developers to create location-based augmented reality experiences tied to Earth's coordinate system, allowing virtual content to be anchored to real-world geographic locations without requiring on-site mapping.[39] Introduced in 2022, it leverages Google's Visual Positioning System (VPS) alongside GPS and device sensors to provide global-scale AR positioning.[6] At its core, the API fuses GPS signals, Wi-Fi data, inertial sensors, and visual features captured by the device's camera with VPS, which builds a 3D point cloud from billions of Street View images to match the user's environment against a global localization model.[39] This combination delivers Earth-relative positioning with higher precision than standalone GPS, particularly in areas with VPS coverage spanning nearly all countries.[40] Under typical outdoor conditions, it achieves positional accuracy better than 5 meters, often around 1 meter, enabling stable tracking over large areas by integrating local motion tracking data to minimize drift during wide-area movement.[40] Geospatial poses represent the device's position and orientation in a global Earth-centered coordinate system, typically using the WGS84 datum for latitude, longitude, and altitude.[39] Developers can create persistent geospatial anchors linked directly to these coordinates, with options for WGS84 (standard ellipsoidal model), Terrain (surface-elevated), or Rooftop (building-top) placements to ensure content aligns accurately with physical locations.[39] These anchors support shared experiences across devices, as they are resolved via VPS without needing local session sharing.[6] In 2024, at Google I/O, enhancements to the Geospatial API included expanded coverage to India for Android devices, enabling more creators to build experiences in densely populated urban environments.[41] Additional updates integrated the API with tools like Adobe Aero for faster localization and improved anchor accuracy, and Unity Editor for scaling content across multiple sites using Google Maps Places API.[41] A pilot program also began incorporating Geospatial AR content into Google Maps' Street View and Lens modes in select cities like Singapore and Paris.[41] Common applications include navigation overlays, such as guiding users to parked vehicles in lots, and large-scale games like virtual balloon-popping or garden-building that span city blocks.[6] Optimal performance requires locations covered by Street View imagery, which favors outdoor areas with good visibility of surroundings, though the API operates on compatible ARCore devices without additional hardware.[39]Scene Semantics
Introduced at Google I/O 2023, the Scene Semantics API in ARCore utilizes machine learning to deliver real-time semantic understanding of outdoor environments captured by the device's camera.[9] It processes the camera image feed on-device to generate a semantic image, where each pixel is assigned one of 11 predefined labels representing common outdoor scene components, along with a corresponding confidence image indicating prediction reliability for each pixel. This enables developers to identify and interact with environmental elements such as buildings, roads, and vegetation without relying solely on geometric tracking.[4] The API supports ML-based detection by mapping pixels to semantic labels derived from the scene's point cloud and image data, producing semantic masks that highlight regions of specific categories and allow for precise labeling. The supported labels include sky (open sky including clouds), building (structures like houses and attached elements), tree (non-walkable vegetation such as trees and shrubs), road (drivable surfaces), sidewalk (pedestrian paths including curbs), terrain (walkable natural ground like grass or sand), structure (non-building elements like fences or bridges), object (temporary or permanent items such as signs or poles), vehicle (motorized transport like cars or buses), person (humans including pedestrians), and water (bodies like lakes or rivers). Developers can query the prevalence of these labels in the current frame—such as the fraction of the scene occupied by roads or people—to inform dynamic AR behaviors, like restricting virtual object placement to safe areas. Additionally, the API provides quality tiers for predictions, with higher reliability for larger or more common objects like buildings and roads compared to smaller or transient ones like vehicles.[42][4] This API integrates with ARCore's environmental understanding by layering semantic information onto detected geometry, such as planes and point clouds, to create a richer model of the scene for more intelligent interactions. It also combines with the Depth API to project semantic labels into 3D space, enabling the derivation of volumetric representations like approximate 3D bounding boxes for labeled regions when depth data is available. For instance, in context-aware AR applications, developers can use these features to place virtual signage on detected sidewalks while avoiding roads or water bodies, enhancing realism and safety in outdoor experiences. The on-device inference ensures low latency and preserves user privacy by avoiding cloud uploads of scene data.[4][43]Augmented Faces and Images
ARCore's Augmented Faces API enables developers to overlay virtual assets onto detected human faces using the device's front-facing camera, without requiring specialized hardware. Introduced in February 2019 as part of ARCore 1.7, the API employs machine learning models to detect and track facial features in real-time, generating a dense 3D mesh consisting of 468 vertices that represent the face's geometry relative to its center pose.[44][45][46] This mesh updates each frame, typically at the camera's rate of up to 60 frames per second on supported devices, allowing for smooth rendering of effects such as filters or accessories. The API also provides region poses for key facial areas like the eyes, nose, and mouth, facilitating precise asset placement that adapts to head movements and partial occlusions.[45][47] The Augmented Faces API supports tracking multiple faces simultaneously through the session's trackables, enabling applications to handle scenarios with more than one person in view, though performance may vary based on device capabilities.[48] Developers can leverage the 3D mesh deformations to infer facial expressions, supporting dynamic overlays that respond to movements like smiling or frowning. For realistic integration, the API integrates with ARCore's light estimation to adjust virtual assets' shading based on environmental lighting conditions.[45] Common applications include AR beauty tools, where users try on virtual makeup or hairstyles, and interactive filters in social media experiences.[45] In parallel, ARCore's Augmented Images API allows for real-time tracking of predefined 2D images, such as posters or product packaging, by detecting and estimating their 6DoF pose (position and orientation) along with physical size. Launched at Google I/O in May 2018, this API uses computer vision and machine learning to extract grayscale feature points from a developer-provided image database, enabling augmentation even for moving or partially occluded targets.[49][50] It can track up to 20 images concurrently and refines estimates frame-by-frame at up to 60 FPS, maintaining stability when images are temporarily out of view assuming a static environment.[50][47] Augmented Images requires images to be flat and occupy at least 25% of the camera frame for reliable detection, with a maximum database size of 1,000 images per session.[50] This limitation necessitates a predefined catalog of target images, which developers must generate using tools like arcoreimg before deployment. Applications span marketing campaigns, where scanning a poster triggers interactive overlays, and educational tools that enhance printed materials with digital content.[50] Both APIs contribute to immersive AR experiences by focusing on dynamic, user-facing interactions, distinct from static environmental anchoring.[50][45]Development and Compatibility
SDKs and Integration
ARCore offers primary software development kits (SDKs) in Java and Kotlin for native Android applications, enabling developers to integrate augmented reality features directly into Android apps using the Android Studio environment. For performance-intensive scenarios, such as real-time rendering or cross-platform engines, the C++ SDK via the Android Native Development Kit (NDK) provides low-level access to ARCore's core functionalities. Additionally, JavaScript support through the WebXR Device API allows for WebAR experiences in compatible browsers like Chrome on Android, facilitating browser-based AR without native app installation.[51][52][53] The ARCore API is structured around key components for managing AR sessions and processing real-time data. Session management involves creating anArSession object to oversee the AR lifecycle, including starting, pausing, and resuming the session based on app state. Frame updates are delivered per camera frame via the ArFrame class, supplying updated pose data, camera intrinsics, and environmental insights like detected planes or light estimates. Configuration options, such as enabling or disabling plane finding mode, allow customization of tracking behaviors to balance accuracy and computational load—for instance, setting Config.PlaneFindingMode.[HORIZONTAL](/page/Horizontal) to detect only horizontal surfaces for simpler scenes.[48][54]
Supporting tools enhance development workflows, particularly for game engines. ARCore Extensions for Unity, version 1.51.0 and later as of 2025, integrate with Unity's AR Foundation to expose advanced ARCore features like Cloud Anchors and depth sensing in a cross-platform manner, requiring Unity 2019.4 or newer with AR Foundation 4.1.5 or later for full compatibility.[55][56] In 2025, Google introduced ARCore for Jetpack XR (version 1.0.0-alpha07 as of October 2025), a library that integrates ARCore capabilities with Jetpack Compose for modern Android UI development.[57] For debugging, Scene Viewer serves as an essential tool, enabling developers to preview and interact with 3D models (in glTF or glb format) in AR mode directly from an Android app or web link, helping validate asset compatibility and rendering without building a complete application.[58]
To integrate ARCore, developers first install Google Play Services for AR via the Google Play Store on supported devices, ensuring the latest version (such as 1.51.0) is available for runtime support. In the Android project, add the ARCore dependency to the build.gradle file (e.g., implementation 'com.google.ar:core:1.51.0') and declare permissions for CAMERA and INTERNET in the AndroidManifest.xml. The session lifecycle is handled programmatically: check device compatibility with ArCoreApk_checkAvailability(), create and configure the session if supported, process frames in the render loop, and properly pause or close the session during app interruptions to prevent resource leaks. For WebXR, initialize an immersive AR session using navigator.xr.requestSession('immersive-ar') after verifying ARCore support.[59][51][52][60]
Best practices emphasize reliability and efficiency in ARCore integration. For error handling, always verify ARCore availability and prompt users to install or update Google Play Services for AR if the device is unsupported, using asynchronous checks like ArCoreApk_checkAvailabilityAsync() to avoid blocking the UI. Performance optimization includes minimizing tracking overhead by selectively enabling features—such as disabling environmental probing when only motion tracking is needed—and leveraging efficient rendering pipelines like OpenGL ES to maintain 60 FPS on mid-range devices.[52][51]