Skip to content

Releases: google-ar/arcore-android-sdk

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.

ARCore SDK for Android v1.4.0

12 Sep 00:33
Compare
Choose a tag to compare

Updated on 2018-09-11 to add links to ARCore 1.4.1 APK that fixes Issue 512 and Issue 429.

ARCore APK v1.4.1

Note: this is ARCore APK-only release.

Bug fixes

In ARCore 1.4.1 APK, fixed an issue where supported devices could sometimes report as unsupported:

  • Issue 512 Zenfone AR not supported with ARCore 1.4?
  • Issue 429 FatalException occurs when using huawei p20 to run solarsystem

ARCore SDK for Android v1.4.0

Breaking changes

None.

New APIs and capabilities

New camera configuration API

  • Java/C: New CameraConfig class describes the camera config, used to obtain the CPU image and GPU texture dimensions.
  • Java/C: New methods on Session:
    • getSupportedCameraConfigs() returns a list of supported camera configs.
    • setCameraConfig(…) sets the camera config to one returned by getSupportedCameraConfigs().
    • getCameraConfig() gets the camera config currently in use.
  • C: New ArCameraConfigList class to hold list of ArCameraConfigs.

New raycast methods

  • Java: New method Frame.hitTest(float[] origin, int originOffset, float[] direction, int directionOffset) that performs a hit test with an arbitrary ray constructed from given origin and direction.
  • C: New method ArFrame_hitTestRay(…) that performs a hit test with an arbitrary ray constructed from given origin and direction.

Support for camera auto focus mode

  • Java/C: New methods on Config:
    • setFocusMode(FocusMode focusMode) to enable/disable auto-focus. Default mode remains fixed focus, which is optmized for AR tracking.
    • getFocusMode() returns the current focus mode.

Deprecations

None.

Behavioral changes

  • Java/C: If the camera configuration has changed by Session's setCameraConfig() since the last call to resume(), all images previously returned by Frame's acquireCameraImage() must be closed before calling resume(). Failure to do so will result in an IllegalStateException (C: AR_ERROR_ILLEGAL_STATE) and the session will not resume.

Other changes

  • Java: Fix comment for CameraIntrinsics.getImageDimensions() to refer to "image dimensions" instead of "principal point".

ARCore SDK for Android v1.3.0

21 Jun 20:21
Compare
Choose a tag to compare

Updated on 2018-06-25 to also mention fix for issue 212.

Breaking changes

None.

New APIs and capabilities

  • New method on Frame:
    • getAndroidSensorPose() returns the world-space pose of the Android sensor frame.
  • New methods on Camera:
    • getImageIntrinsics() returns the camera image's camera intrinsics.
    • getTextureIntrinsics() returns the camera texture's camera intrinsics.
  • New class CameraIntrinsics that provides the unrotated physical characteristics for a camera, which consists of its focal length, pricinpal point, and image dimensions.
  • New method on Session:
    • getConfig() returns the config set by Session.configure().

Deprecations

None.

Behavioral changes

None.

Other changes

  • Image.close() is now idempotent. Fixes issue 352.

Bug fixes

  • If an invalid API key for the ARCore Cloud Anchor Service is specified, the final Cloud Anchor state of the anchor will now return ERROR_NOT_AUTHORIZED.
  • Fixed issue 212 with AR-Optional apps on 32-bit systems running Android M and earlier.

ARCore SDK for Android v1.2.1

30 May 20:39
Compare
Choose a tag to compare

Changes

  • SDK version updated 1.2.1, to match other SDK platforms. Otherwise, equivalent to ARCore SDK for Android 1.2.0.

ARCore SDK for Android v1.2.0

08 May 19:35
Compare
Choose a tag to compare

Updated on 2018-05-11 to remove temporary APK sideload instructions.

Breaking changes

None.

New APIs and capabilities

  • Cloud Anchors API. Enables developers to build shared AR experiences across iOS and Android, by allowing anchors created on one device to be transformed into cloud anchors and shared with users on other devices.
  • Augmented Images API. Enables ARCore apps to detect and track images.
  • Vertical plane detection. ARCore now detects both horizontal and vertical planes.

Deprecations

  • Java: Session.isSupported() is now deprecated. Device capability checking is part of ARCore installation functionality (specifically ArCoreApk.checkAvailability() and ArCoreApk.requestInstall()). The implementation is frozen to always return true as it did in release 1.1.
  • C: ArSession_checkSupported() is now deprecated. Device capability checking is part of ARCore installation functionality (specifically ArCoreApk_checkAvailability() and ArCoreApk_requestInstall()). The implementation is frozen to always return AR_SUCCESS as it did in release 1.1.

Behavioral changes

  • The default session config now enables both horizontal and vertical plane detection. Previously only horizontal planes were detected.

Other changes

  • Updated documentation for session config UpdateMode AR_UPDATE_MODE_BLOCKING to specify behavior when camera images do not arrive by the built-in timeout.
  • Java: For AR-Required apps, ArCoreApk.checkAvailability() will always immediately return a SUPPORTED_* Availability.
  • C: For AR-Required apps, ArCoreApk_checkAvailability() will always immediately return an AR_AVAILABILITY_SUPPORTED_* code.
  • ARCore SDK will now work properly when built into a library that is then built into an release proguarded app, by adding -keepattributes *Annotation* in your library's proguard spec.
  • Java: Added Pose convenience methods getTranslation(), getRotationQuaternion() and rotateVector() that return an array instead of taking an output array as an argument.
  • Sample apps have new, distinct icons.

Bug fixes

  • Applications using launchMode="singleTask" in their AndroidManifest.xml (which is the default for Unity and Unreal apps) will no longer display a blank screen if the user exits the app and re-launches it while the "This app requires the latest version of ARCore" screen is displayed.

Known Issues

  • If the API key specified for authenticating with the ARCore Cloud Anchor service is invalid, the final cloud anchor state of the anchor will be ERROR_INTERNAL instead of ERROR_NOT_AUTHORIZED. This is a known issue and will be fixed in an upcoming release.

ARCore SDK for Android v1.1.0

16 Apr 23:35
Compare
Choose a tag to compare

ARCore SDK v1.1.0

ARCore enables AR applications to track a phone’s motion in the real world, detect planes in the environment, and understand lighting in the camera scene.

ARCore 1.1 provides two new APIs:

  • API for synchronously (in the same frame) acquiring the image from a camera frame (without manually copying the image buffer from the GPU to the CPU). This lets you run your own image processing algorithms on the images from the camera.
  • API for getting color correction information for the images captured by the camera. This lets you render your virtual objects in a way that matches the real-world lighting conditions.

Build-config changes

We have split arcore_sdk.so into arcore_sdk_c.so and arcore_sdk_jni.so.

  • Clients using the C API should dynamically load only arcore_sdk_c.so. The C sample app reflects this change.
  • Java clients don’t need to change anything as the Java wrapper handles this.

Supported Devices

This release is only supported on, and should only be installed on, qualified devices running Android N and later. See the list of ARCore supported devices for specific device models.

Downloading APKs

When possible, ARCore should always be installed from the Google Play Store. The APKs are offered for use in the Android Emulator and for developers that cannot access the Google Play Store.

ARCore SDK for Android v1.0.0

23 Feb 16:56
Compare
Choose a tag to compare

ARCore SDK v1.0.0

ARCore enables AR applications to track a phone’s motion in the real world, detect planes in the environment, and understand lighting in the camera scene. ARCore 1.0 introduces oriented points which allow the placement of virtual objects on non-horizontal or non-planar textured surfaces (like posters and cans). The Android Emulator in Android Studio 3.1 Beta supports ARCore 1.0.

ARCore 1.0 is available for use in production apps on supported Android devices. ARCore 1.0 introduces the concept of AR required and AR optional apps. Apps should be classified as required or optional to ensure the ARCore service install is properly handled by the Play Store.

With ARCore 1.0 your app must request the Android Camera Permission before session create (ArSession_create() in C and new Session() in Java). Previously in Developer Preview 2, camera permission was required only before resuming an AR Session.

Supported Devices

  • This release is only supported on, and should only be installed on, qualified devices running Android N and later. See the list of ARCore supported devices for specific device models.

  • Apps built with ARCore Developer Preview or ARCore Developer Preview 2 are not supported on with ARCore 1.0.

Known Issues

Lifecycle issues

  • ARCore does not support picture-in-picture mode.

Java

  • The rendering primitives included in the sample code are designed to illustrate functionality and are not performance optimized.
  • After Session.pause() is called, Anchor.getTrackingState() and Plane.getTrackingState() will not be set to STOPPED_TRACKING.

ARCore SDK for Android Preview 2

15 Dec 16:20
Compare
Choose a tag to compare
Pre-release

ARCore SDK Preview 2

2018-01-30 EDIT: Added link to ARCore supported devices.

This is a developer preview SDK that enables prototyping AR experiences using ARCore on supported Android devices.

ARCore enables AR applications to track a phone’s motion in the real world, detect planes in the environment, and understand lighting in the camera scene.

This developer preview release is not intended for use in production apps that are shipped to customers. Future versions of ARCore might introduce breaking changes to the API.

Supported Devices

This release is only supported on, and should only be installed on, qualified devices running Android N and later. See the list of ARCore supported devices for specific device models.

Installing this release on phones other than the supported devices might break other software on the device.

Notes

Multiple Versions of ARCore

  • Apps built with the original ARCore SDK Developer Preview are only compatible with the original arcore-preview.apk. Apps built with ARCore SDK Developer Preview 2 are only compatible with arcore-preview2.apk.
  • A developer can install versions of ARCore provided in both the original ARCore SDK Developer Preview and ARCore SDK Developer Preview 2 at the same time to facilitate using apps built with either SDK. The original arcore-preview.apk will be visible as “Tango Core” in the Android Apps settings whereas arcore-preview2.apk will be visible as “ARCore” in the Android Apps settings.

Known Issues

  • ArSession_configure() does not apply settings changes if called while in a resumed state.

What’s New In Developer Preview 2

New SDK

  • Developer Preview 2 features an Android NDK (C API)

API Changes

  • The API interfaces have undergone significant revision and changes. All key functionality from the original Developer Preview remains, but the methods and function calls have changed.
  • The API now natively supports attaching Anchors to Planes.
  • ARCore Developer Preview 2 includes Unity and Java samples for camera image data access on the CPU. The provided Computer Vision sample is useful for running custom computer vision algorithms or image analysis on the camera image data.

Lifecycle Improvements

  • ARCore apps may recover planes and anchors if the session is paused and then resumed, provided the user is in roughly the same location and the environment or lighting has not changed significantly. This enables scenarios where AR content is not lost when the user briefly switches apps.

Fixes

  • Many stability and performance improvements.