Skip to content

Releases: google-ar/arcore-android-sdk

ARCore SDK for Android v1.12.1

12 Oct 01:31
Compare
Choose a tag to compare

Note: This is a Google Play Services for AR (APK) only release.

Bug fixes

  • Fixes issues affecting users of Google Maps AR Walking Directions.

ARCore SDK for Android v1.12.0

12 Sep 18:55
Compare
Choose a tag to compare

Breaking & behavioral changes

  • The data captured by hostCloudAnchor() (Java) and ArSession_hostAndAcquireNewCloudAnchor() (NDK), which is uploaded to the ARCore Cloud Anchor API service has changed. See https://developers.google.com/ar/develop/java/cloud-anchors/overview-android#how-hosted to learn more.

  • resolveCloudAnchor() (Java) and ArSession_resolveAndAcquireNewCloudAnchor() (NDK) will no longer timeout or fail when the ARCore Cloud Anchor API service is unreachable, or the anchor cannot be immediately resolved. Instead, the API will continue to attempt to resolve the provided anchors until they are detached.

    • Java: ERROR_RESOLVING_LOCALIZATION_NO_MATCH and ERROR_SERVICE_UNAVAILABLE enums in CloudAnchorState are now deprecated and will no longer be returned.
    • NDK: AR_CLOUD_ANCHOR_STATE_ERROR_RESOLVING_LOCALIZATION_NO_MATCH and AR_CLOUD_ANCHOR_STATE_ERROR_SERVICE_UNAVAILABLE enums in the ArCloudAnchorState are now deprecated and will no longer be returned.

    These changes only affect apps built with ARCore SDK 1.12 or later. Apps built with older SDKs will not be affected by this change, and will continue to observe old behavior.

New APIs and capabilities

  • There is a new enum value that can be set for a Cloud Anchor's state. The ERROR_HOSTING_SERVICE_UNAVAILABLE value will be set for a Cloud Anchor during the hosting process, if the ARCore Cloud Anchor service is unreachable.

Deprecations

  • The following enum values in the CloudAnchorState are being deprecated:
    • Java: ERROR_RESOLVING_LOCALIZATION_NO_MATCH and ERROR_SERVICE_UNAVAILABLE enums in CloudAnchorState are now deprecated and will no longer be returned.
    • NDK: AR_CLOUD_ANCHOR_STATE_ERROR_RESOLVING_LOCALIZATION_NO_MATCH and AR_CLOUD_ANCHOR_STATE_ERROR_SERVICE_UNAVAILABLE enums in the ArCloudAnchorState are now deprecated and will no longer be returned.

Other changes

None.

Bug fixes

None.

ARCore SDK for Android v1.11.0

05 Aug 20:22
Compare
Choose a tag to compare

Breaking & behavioral changes

  • ARCore now targets 60fps on supported devices. Use new camera config filters to target 30fps on all ARCore devices. See ARCore supported devices for a list of supported devices.
  • All sample apps will now allow the device to sleep when tracking is lost, such as when the device is placed on a table or in a pocket or bag.

New APIs and capabilities

  • Ability to filter camera configurations based on Target FPS and Depth Sensor Usage:
    • New CameraConfigFilter class (Java) and ArCameraConfigFilter_*() functions (NDK) let an app filter the CameraConfig list based on Target FPS and/or Depth Camera Usage.
    • New Session.getSupportedCameraConfigs(CameraConfigFilter) (Java) and ArSession_getSupportedCameraConfigsWithFilter(…) (NDK) returns a list of supported camera configs based on the provided filter settings.

Deprecations

  • Session.getSupportedCameraConfigs() (Java) and ArSession_getSupportedCameraConfigs(…) (NDK) are now deprecated. Use getSupportedCameraConfigs(CameraConfigFilter) (Java) and ArSession_getSupportedCameraConfigsWithFilter(…)(NDK) instead.

Other changes

  • The ARCore service has been renamed to Google Play Services for AR. On Google Play devices it is now distributed as part of Google Play Services.
  • The samples have been updated to Gradle 5.4.1 and Android Gradle Plugin 3.4.1.
  • Samples now uses white for all detected planes, to avoid confusion due to users inferring meaning from the different colors.
  • Fixed a memory leak that occurs when an Activity is passed in as the Application Context during Session creation.
  • Added a switch to Computer Vision sample for toggling RGB camera passthrough.

Bug fixes

None

ARCore SDK for Android v1.10.0

20 Jun 20:55
Compare
Choose a tag to compare

Breaking & behavioral changes

  • None

New APIs and capabilities

  • New Environmental HDR mode added to Light Estimation API.
    • Environmental HDR provides developers with three APIs to replicate real world lighting when using the back-facing camera:
      • Main Directional Light: helps with casting shadows in the right direction.
      • Ambient Spherical Harmonics: helps model ambient illumination from all directions.
      • HDR Cubemap: provides specular highlights and reflections.
  • Add ArImage_* methods to access CPU image data not through Android NDK.

Deprecations

  • ArImage_getNdkImage(const ArImage* image, const AImage** out_ndk_image) (NDK) is now deprecated. Use the other ArImage_* functions to obtain image data.

Other changes

  • Java Config setters now return this, which allows method call chaining: session.configure(new Config(session).setA(..).setB(..));.
  • Augmented Faces runs faster and consumes less power.

Bug fixes

  • Previously, enabling Cloud Anchor mode with the front-facing (selfie) camera did not return an unsupported configuration error. This is now fixed.

ARCore SDK for Android v1.9.1

21 May 22:10
Compare
Choose a tag to compare

Note: this is an ARCore APK-only release (version 1.9.1).
SDK version remains unchanged (version 1.9.0).

Bug fixes

ARCore SDK for Android v1.9.0

21 May 22:12
Compare
Choose a tag to compare

Breaking changes/behavioral changes

  • When using a Session that is configured to use a front-facing (selfie) camera, getSupportedCameraConfigs() will return one or more supported camera configs. For apps built using ARCore SDK 1.7.0 or 1.8.0, three identical camera configs were returned when using the front-facing (selfie) camera.
  • getMeshTriangleIndices(…) now returns a ShortBuffer instead of a CharBuffer.
  • Augmented Images are now tracked once they leave the camera frame. See "New APIs and capabilities" below for details.

New APIs and capabilities

  • ARCore can now track moving Augmented Images. Previously, images were assumed to not move, and their pose would only be updated infrequently.
  • ARCore can continue tracking images even though they are longer visible to the camera. Use AugmentedImage#getTrackingMethod() (Java) or ArAugmentedImage_getTrackingMethod() (NDK) to determine whether the image is currently being tracked by the camera (FULL_TRACKING), or is being tracked based on its last known pose (LAST_KNOWN_POSE).
  • Adds the Scene Viewer feature, which can be used to view 3D models in AR from most Android browsers with the <model-viewer> web component.

Other changes

  • Removes the check for the device tracking state in augmented_image_c and augmented_image_java samples. Augmented Images now can track images when the device tracking state is not tracking.

Bug fixes

  • Fixed a NullPointerException that was thrown when setting a null AugmentedImageDatabase in the session configuration.
  • Fixed issue causing face meshes to only render on Android O (API Level 26) and above devices, due to mesh data being returned with incorrect byte order.

ARCore SDK for Android v1.8.0

28 Mar 22:08
Compare
Choose a tag to compare

Behavioral changes

  • Auto Focus has been enabled by default in augmented_image_c and augmented_image_java samples, to improve with tracking of small, nearby image targets on devices where the ARCore camera supports Auto Focus.

Bug fixes

  • Issue #683, Issue #729:
    • Fixed CPU Image Access on Xiaomi devices: Mi 8, Mi 8 SE, Mi Mix 2S, Mi Mix 3 and Pocophone F1.

ARCore SDK for Android v1.7.0

06 Mar 17:57
Compare
Choose a tag to compare

User privacy requirements

Breaking changes

None.

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.

Deprecations

  • 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.

ARCore SDK for Android v1.6.0

06 Dec 21:42
Compare
Choose a tag to compare

License and terms of service changes

Breaking & behavioral changes

  • The behavior of Camera.getPose() (Java) and ArCamera_getPose() (C) have changed. See "Bug fixes" below for details.
  • Java: new Session() now correctly declares that it can throw UnavailableDeviceNotCompatibleException. See "Bug fixes" below for details.
  • The middle CPU image resolution returned by Session.getSupportedCameraConfigs() (Java) and ArSession_getSupportedCameraConfigs() (C) is no longer guaranteed to be 1280 x 720. It now varies by device.

Other changes

  • Improved documentation of prerequisites for new Session() (Java) and ArSession_create() (C).

Bug fixes

  • Camera.getPose() (Java) and ArCamera_getPose() (C) now correctly return the camera pose oriented with the physical image sensor as originally intended. Previously this method had returned a camera rotated to be aligned with Android sensor coordinates. This change only affects applications using the ARCore v1.6 SDK and later.
  • Java: new Session() now correctly declares that it can throw UnavailableDeviceNotCompatibleException. This is not a behavioral change as this exception has been possible from native code since ARCore 1.0.
  • Issue #563: Resolved an crash with a log message "AssetManager has been finalized" that could occur on some devices.
  • Issue #630: Fixed a bug where multiple points in a point cloud could use the same ID.
  • C: Issue #625: ArSession_getAllTrackables() now clears the input list as documented.
  • Fixed issue where ARCore would fail to track on certain devices if the middle CPU image resolution was set. The middle CPU image resolution is no longer guaranteed to be 1280 x 720, see "Breaking changes" above.

ARCore SDK for Android v1.5.0

09 Nov 18:25
Compare
Choose a tag to compare

ARCore APK v1.5.3

Note: this is an ARCore APK-only release (version 1.5.3). SDK version remains unchanged (version 1.5.0).

Bug fixes

  • Improves support for Sony Xperia XZ3.

ARCore APK v1.5.2

Note: this is an ARCore APK-only release (version 1.5.2). SDK version remains unchanged (version 1.5.0).

Bug fixes

  • Improves tracking quality on some devices.

ARCore APK v1.5.1

Note: this is an ARCore APK-only release (version 1.5.1). SDK version remains unchanged (version 1.5.0).

Bug fixes

  • Fixed a memory leak when using Playground.
  • Fixed a crash related to issue 563. Note: the underlying issue has not been fixed, but when this error occurs it will now throw a FatalException (Java) or return AR_ERROR_FATAL (C) instead of crashing with a JNI error.

ARCore SDK for Android v1.5.0

Breaking changes

None.

New APIs and capabilities

  • New Java method PointCloud.getIds() and C function ArPointCloud_getIds() that returns a stable ID associated with each point in the point cloud.

Deprecations

None.

Behavioral changes

  • ArCoreApk.requestInstall(Activity, bool) (Java) and ArCoreApk_requestInstall() (C) now defaults to skipping the user education dialog for AR Optional apps.

Other changes

  • Removed dead code in computervision sample (C and Java) related to reading of UV planes of YUV image.
  • Suppress drawing of camera background in samples if frame timestamp is zero. This is to avoid drawing possible leftover data from previous sessions when a texture is reused.
  • Updated documentation for Camera.getPose() (Java) and ArCamera_getPose() (C) to reflect the current incorrect behavior, which has existed since ARCore 1.0. The behavior will be fixed in an upcoming version of the SDK, without affecting behavior of existing apps.

Bug fixes

  • Issue #419: Added a workaround that should reduce or eliminate cases of poor or no motion tracking on Qualcomm-based Samsung Galaxy S9, S9+ and Note9 devices.
  • Issue #469: Resolved a race condition that could cause ARCore to report a device as unsupported immediately after ARCore is updated.
  • The bool argument to ArCoreApk_requestInstall has been changed to int32_t for ANSI C compatibility.
  • The computervision C sample was releasing the ArImage too soon. Moved call to ArImage_release() after call to cpu_image_renderer_.Draw(..).
  • The computervision C and Java samples updated with additional locking, to avoid switching resolutions while the ArImage is being used for rendering.
  • Resolved some cases where ArCoreApk.requestInstall() (Java) and ArCoreApk_requestInstall() (C) could throw a FatalException.