Skip to content

User privacy requirements

Breaking changes


New APIs and capabilities

  • New Camera.getTrackingFailureReason() (Java) and ArCamera_getTrackingFailureReason() (NDK) method that returns the reason for AR tracking failure when tracking state is PAUSED.
  • New Frame.transformCoordinates2d(…) (Java) and ArFrame_transformCoordinates2d(…) (NDK) method that transforms a list of 2D coordinates from one 2D coordinate system to another 2D coordinate system.
  • New Session constructors Session(Context, Set<Session.Feature>) (Java) and ArSession_createWithFeatures() (NDK) enable new capabilities, starting with:
  • Front-facing Camera & Augmented Faces
    • Apps can now enable Augmented Faces with the front-facing (selfie) camera by requesting the FRONT_CAMERA feature when creating a session.
    • New methods CameraConfig.getFacingDirection() (Java) and ArCameraConfig_getFacingDirection() (NDK) let an app check if it is using the front-facing camera.
    • Note: Motion tracking, all types of anchors, Augmented Images, and plane detection are not available when using the front-facing camera.
    • New method Config.setAugmentedFaceMode(…) lets an app enable Augmented Faces.
    • New Trackable AugmentedFace class to detect a face, determine region poses and generate a 3D face mesh.
    • AugmentedFace (Java) class and a set of ArAugmentedFace_* (NDK) methods provide getters to request the center pose, region poses, vertices, normals, and triangle indices of the 3D face mesh.
  • Shared Camera access (Java-only)
    • Apps can now share camera control with ARCore by requesting the SHARED_CAMERA feature when creating a session. This feature is primarily intended to allow fast switching between camera-only (non-AR) and ARCore modes.
    • New shared_camera_java example that demonstrates how to share camera access with ARCore.
    • New SharedCamera class to enable apps to share Camera2 API access with ARCore.
      • Note: Frame.getImageMetadata() throws IllegalStateException when using a shared camera session. Instead, subscribe to the camera callback directly by using SharedCamera.setCaptureCallback(…), and use Frame.getAndroidCameraTimestamp() to correlate frame to metadata.
    • New method Session.getSharedCamera() gets the shared camera object for the session.
    • New method Frame.getAndroidCameraTimestamp() returns the Android camera timestamp of the image.
  • Additional Java-only changes:
    • New method Session.close() allows for explicit release of resources held by ARCore session for better resource control.
    • PointCloud now implements Closeable, allowing it to be used with Java try-with-resources and Kotlin use blocks.


  • Frame.transformDisplayUvCoords (Java) and ArFrame_transformDisplayUvCoords (NDK) is now deprecated. Please use frame.transformCoordinates2d(Coordinates2d.VIEW_NORMALIZED, …, Coordinates2d.TEXTURE_NORMALIZED, …) (Java) and ArFrame_transformCoordinates2d(…, AR_COORDINATES_2D_VIEW_NORMALIZED, …, AR_COORDINATES_2D_TEXTURE_NORMALIZED, …) (NDK) instead.

Bug fixes

  • Issue #630:
    • Java: Session.createAnchor() and Trackable.createAnchor() will now correctly throw SessionPausedException and NotTrackingException when appropriate instead of FatalException.
    • C: ArSession_acquireNewAnchor() and ArTrackable_acquireNewAnchor() will now correctly return AR_ERROR_SESSION_PAUSED and AR_ERROR_NOT_TRACKING when appropriate instead of AR_ERROR_FATAL.
Assets 5
You can’t perform that action at this time.