This is the current Tango application development stack:
TangoService is an Android service running on a standalone process. It uses standard Android Interprocess Communication to support apps written in Java, Unity, and C. TangoService performs all of the main Tango technologies, such as motion tracking, area learning, and depth perception. Applications can connect to TangoService through our APIs.
Which API should I use?
The Unity SDK is great for making games and other programs requiring 3D visualization if you don't already have an existing or preferred rendering engine. We provide scripts, components, prefabs, and demo programs in our Unity packages.
For working directly with Android in Java, or other Java applications, we have a Java API, interfacing with TangoService through the AIDL (Android Interface Definition Language). A Tango helper library provides methods and classes that work very similarly to standard Android APIs, but with added functionality to get information from the extra sensors and cameras on the Tango device. Developers who are already familiar with Android Java development should be able to easily adjust to the Tango Java API.
Developers who want to be able to write apps with the Android NDK (Native Development Kit) should use the C API, which enables more flexibility on the native level. If you have your own visualization engine to display Tango's 3D capabilities, or you are developing something that doesn't require visualization but does require more system-level capabilities, you can use the C APIs directly.