Motion tracking paused because the camera is in use by another application. Tracking will
resume once this app regains priority, or once all apps with higher priority have stopped using
the camera. Prior to ARCore SDK 1.13,NONEis returned in this
case instead.
public
static
final
TrackingFailureReason
EXCESSIVE_MOTION
Motion tracking lost due to insufficient visual features. Ask the user to move to a different
area and to avoid blank walls and surfaces without detail.
public
static
final
TrackingFailureReason
INSUFFICIENT_LIGHT
Motion tracking lost due to poor lighting conditions. Ask the user to move to a more brightly
lit area. Android 12 (API level 31) or later, the user may havedisabled camera access, causing ARCore to receive a blank camera feed.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-10-31 UTC."],[[["\u003cp\u003e\u003ccode\u003eTrackingFailureReason\u003c/code\u003e is a Java enum that describes why ARCore might fail to track motion.\u003c/p\u003e\n"],["\u003cp\u003eSeveral reasons for tracking failure include insufficient light, excessive motion, and bad internal state.\u003c/p\u003e\n"],["\u003cp\u003eEach reason provides specific guidance for user recovery, like moving to a brighter area or holding the device steadier.\u003c/p\u003e\n"],["\u003cp\u003eWhen tracking is successful, the \u003ccode\u003eNONE\u003c/code\u003e enum value is returned, indicating expected behavior.\u003c/p\u003e\n"],["\u003cp\u003eIn cases where the camera is unavailable due to other applications, the \u003ccode\u003eCAMERA_UNAVAILABLE\u003c/code\u003e value is returned, signaling a pause in tracking until camera access is regained.\u003c/p\u003e\n"]]],["`TrackingFailureReason` is an enum describing why AR tracking might fail. The enum includes values like `BAD_STATE` (internal issue), `CAMERA_UNAVAILABLE` (camera used by another app), `EXCESSIVE_MOTION` (user moving too fast), `INSUFFICIENT_FEATURES` (lack of visual details), `INSUFFICIENT_LIGHT` (poor lighting), and `NONE` (normal tracking). It provides methods for comparing, obtaining names and classes, and converting to strings, with inherited functionality from `Enum`, `Object`, `Constable`, and `Comparable`.\n"],null,["# TrackingFailureReason\n\n`\npublic final enum\n`**TrackingFailureReason**`\n` \nDescribes possible AR tracking failure reasons. \n\nInherited Methods\n-----------------\n\nFrom `class\njava.lang.Enum` \n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ` final `[Object](https://developer.android.com/reference/java/lang/Object)` ` | clone`()` |\n| ` final int ` | compareTo`(`[TrackingFailureReason](/ar/reference/java/com/google/ar/core/TrackingFailureReason)` arg0)` |\n| ` int ` | compareTo`(`[Object](https://developer.android.com/reference/java/lang/Object)` arg0)` |\n| ` final Optional\u003cEnumDesc\u003c`[TrackingFailureReason](/ar/reference/java/com/google/ar/core/TrackingFailureReason)`\u003e\u003e ` | describeConstable`()` |\n| ` final boolean ` | equals`(`[Object](https://developer.android.com/reference/java/lang/Object)` arg0)` |\n| ` final void ` | finalize`()` |\n| ` final `[Class](https://developer.android.com/reference/java/lang/Class)`\u003c`[TrackingFailureReason](/ar/reference/java/com/google/ar/core/TrackingFailureReason)`\u003e ` | getDeclaringClass`()` |\n| ` final int ` | hashCode`()` |\n| ` final `[String](https://developer.android.com/reference/java/lang/String)` ` | name`()` |\n| ` final int ` | ordinal`()` |\n| ` `[String](https://developer.android.com/reference/java/lang/String)` ` | toString`()` |\n| ` static \u003cT extends `[Enum](https://developer.android.com/reference/java/lang/Enum)`\u003cT\u003e\u003e T ` | valueOf`(`[Class](https://developer.android.com/reference/java/lang/Class)`\u003cT\u003e arg0, `[String](https://developer.android.com/reference/java/lang/String)` arg1)` |\n\nFrom `class\njava.lang.Object` \n\n|---------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| ` `[Object](https://developer.android.com/reference/java/lang/Object)` ` | clone`()` |\n| ` boolean ` | equals`(`[Object](https://developer.android.com/reference/java/lang/Object)` arg0)` |\n| ` void ` | finalize`()` |\n| ` final `[Class](https://developer.android.com/reference/java/lang/Class)`\u003c?\u003e ` | getClass`()` |\n| ` int ` | hashCode`()` |\n| ` final void ` | notify`()` |\n| ` final void ` | notifyAll`()` |\n| ` `[String](https://developer.android.com/reference/java/lang/String)` ` | toString`()` |\n| ` final void ` | wait`(long arg0, int arg1)` |\n| ` final void ` | wait`(long arg0)` |\n| ` final void ` | wait`()` |\n\nFrom `interface\njava.lang.constant.Constable` \n\n|-----------------------------------------------|-----------------------|\n| ` abstract Optional\u003c? extends ConstantDesc\u003e ` | describeConstable`()` |\n\nFrom `interface\njava.lang.Comparable` \n\n|------------------|----------------------------------------------------------------------------------------------------------|\n| ` abstract int ` | compareTo`(`[TrackingFailureReason](/ar/reference/java/com/google/ar/core/TrackingFailureReason)` arg0)` |\n\nEnum Values\n-----------\n\n#### public\nstatic\nfinal\nTrackingFailureReason\nBAD_STATE\n\n### BAD_STATE\n\n```java\npublic static final TrackingFailureReason BAD_STATE\n``` \nMotion tracking lost due to bad internal state. No specific user action is likely to resolve\nthis issue.\n\n#### public\nstatic\nfinal\nTrackingFailureReason\nCAMERA_UNAVAILABLE\n\n### CAMERA_UNAVAILABLE\n\n```java\npublic static final TrackingFailureReason CAMERA_UNAVAILABLE\n``` \nMotion tracking paused because the camera is in use by another application. Tracking will\nresume once this app regains priority, or once all apps with higher priority have stopped using\nthe camera. Prior to ARCore SDK 1.13, [NONE](/ar/reference/java/com/google/ar/core/TrackingFailureReason#NONE) is returned in this\ncase instead.\n\n#### public\nstatic\nfinal\nTrackingFailureReason\nEXCESSIVE_MOTION\n\n### EXCESSIVE_MOTION\n\n```java\npublic static final TrackingFailureReason EXCESSIVE_MOTION\n``` \nMotion tracking lost due to excessive motion. Ask the user to move the device more slowly.\n\n#### public\nstatic\nfinal\nTrackingFailureReason\nINSUFFICIENT_FEATURES\n\n### INSUFFICIENT_FEATURES\n\n```java\npublic static final TrackingFailureReason INSUFFICIENT_FEATURES\n``` \nMotion tracking lost due to insufficient visual features. Ask the user to move to a different\narea and to avoid blank walls and surfaces without detail.\n\n#### public\nstatic\nfinal\nTrackingFailureReason\nINSUFFICIENT_LIGHT\n\n### INSUFFICIENT_LIGHT\n\n```java\npublic static final TrackingFailureReason INSUFFICIENT_LIGHT\n``` \nMotion tracking lost due to poor lighting conditions. Ask the user to move to a more brightly\nlit area. Android 12 (API level 31) or later, the user may have [disabled camera access](https://developer.android.com/about/versions/12/behavior-changes-all#mic-camera-toggles), causing ARCore to receive a blank camera feed.\n\n#### public\nstatic\nfinal\nTrackingFailureReason\nNONE\n\n### NONE\n\n```java\npublic static final TrackingFailureReason NONE\n``` \nIndicates expected motion tracking behavior. Always returned when [Camera.getTrackingState()](/ar/reference/java/com/google/ar/core/Camera#getTrackingState()) is [TrackingState.TRACKING](/ar/reference/java/com/google/ar/core/TrackingState#TRACKING). When [Camera.getTrackingState()](/ar/reference/java/com/google/ar/core/Camera#getTrackingState()) is [TrackingState.PAUSED](/ar/reference/java/com/google/ar/core/TrackingState#PAUSED), indicates that the session is\ninitializing normally."]]