The Tango project will be deprecated on March 1st, 2018.
Google is continuing AR development with ARCore, a new platform designed for building augmented reality apps for a broad range of devices without the requirement for specialized hardware.

In addition to working with our OEM partners on new devices, Google is also working closely with Asus, as one of our early Tango partners, to ensure that ZenFone AR will work with ARCore. We'll be back with more information soon on how existing and new ZenFone AR users will get access to ARCore apps.

User Experience and the UX Package

Many users are new to Tango, and may try to use your application in ways and places that Tango isn't designed for. To help you detect these issues, we've created the Tango Support Library's UX package. This page describes the UX package, and shares some additional best practices to improve your user's experience.

The UX package is available for Java and Unity.

Starting up

Tango is frequently updated, and older Tango Core versions may not have a feature your app depends on. When starting up, check the version of Tango Core or any other dependencies you have. If you're using the Unity SDK and enable the UX package, this will be done for you.

Wait for valid data

After you connect to Tango, it may take a few moments for data to appear. A common mistake is to render your application before Tango is ready, which makes your UI look unresponsive or broken. Instead, show a loading screen until the Tango poses become TANGO_POSE_VALID. If you're using the Unity SDK and enable the UX package, this will be done for you.

When you restart an application or activity, make no assumptions about where the user is starting from. Generally, you should avoid rendering or transforming when a pose is 'TANGO_POSE_INVALID.'

Exception handling

Tango may not function well in some circumstances, such as dark rooms or overly rapid motion. The Support Library's UX package interprets the Tango sensor data to report these issues in a more understandable way.

You can listen for UX exception events and notify your user when you receive one. This could be a simple toast message or even integrated as part of the core experience. For example, if there are too few depth points, you might prevent the user from doing actions that require depth.

In Unity, you can enable pop-up notifications for common issues.

See the reference documentation for UX Exception Events in Java and Unity for a list of exception types and more information.

Using the Tango UX package

See our language-specific tutorials and API reference:

Send feedback about...