Search code examples
androidandroid-ndkgoogle-project-tango

Include the project tango SDK in an already existing project


I am new to Android development and I have no idea how to include the library that comes with the Google Tango SDK.

The app, as it is, is a small java wrapper around a c++ core that is basically a lightweight render engine. It can render one model and handle input. It is all done in C++ using Android NDK.

The problem is that I now want to use functions like onXyzIjAvailable(). How do I include and use the library? I know of this, but I need to include the library and get access to the TangoService_connectOnXYZijAvailable() function.

I want to stress that I am new to android development and I have never included anything. I have only written the code myself or used Android Studio to download and include the SDKs, generate the GRADLE files and take care of the compilation/makefles. I found this SO post talking about adding a library, but I did not understand the answer. How do I import it to this project and build it?

Thank you so much for the help.


Solution

    1. You must download the current tango api and service sdk for C here
    2. Unzip and place the folders (I named them tango_client_api and tango_service_sdk) you want to. I prefer a structure like that:
      • ProjectFolder/app/
      • ProjectFolder/build/...
      • ...
      • tango_client_api/
      • tango_service_sdk/
      • third-party/...
      • ...
    3. Now you have to include the lib paths into your Android.mk makefile (located in path like ProjectFolder/app/src/main/jni/Android.mk) as followed:

      LOCAL_PATH := $(call my-dir)
      PROJECT_ROOT_FROM_JNI:= ../../../../..
      PROJECT_ROOT:= $(call my-dir)/../../../../..
      include $(CLEAR_VARS)
      
      LOCAL_MODULE    := lib_your_project_name
      LOCAL_SHARED_LIBRARIES := tango_client_api
      LOCAL_CFLAGS    := -std=c++11
      
      LOCAL_C_INCLUDES := $(PROJECT_ROOT)/tango_service_sdk/include/ \
      
      LOCAL_SRC_FILES := your-project-file1.cc \
                         your-project-file2.cc \
                         your-project-file3.cc
      
      LOCAL_LDLIBS    := -llog -lGLESv2 -L$(SYSROOT)/usr/lib
      include $(BUILD_SHARED_LIBRARY)
      $(call import-add-path, $(PROJECT_ROOT))
      $(call import-module,tango_client_api)
      
    4. In your .h files you can use for example: #include <tango_client_api.h> to get access to all TangoService_functions

    And that's it. I really recommend you to look into the tango C examples on github https://github.com/googlesamples/tango-examples-c