Code Samples and Wrappers
Xvisio SDK Documentation Home Page

android-non-root-demo


1 Overview

"android-non-root-demo" demonstrates how to develop Android apk by Xvisio Android SDK(APK Version).

2 Build and Run

2.1 Build Environment

  1. Install "Android Studio" in Linux/Windows OS.Click here to download.
  2. Open "SDK Manager" with "Android Studio" to donwload the latest Android SDK and NDK.
  3. Download the latest "android-non-root-demo" from Github. Click here to download.
  4. Check the version of "android-non-root-demo". android-non-root-demo/xvsdk/build.gradle
    defaultConfig {
        versionCode 3xxx
        versionName "3.x.x-xxxxxxxx"
  1. Click here to get the latest SDK installation package: Please download the package with the name of "xvsdk_3.x.x-xxxxxxx_android_apk.zig".
  2. Unzip "xvsdk_3.x.x-xxxxxxx_android_apk.zig" and copy the file into "android-non-root-demo" to replace the latest SDK. File path: android-non-root-demo/xvsdk/src/main/cpp/xvsdk/. The replaced SDK directory is shown as below:
android-non-root-demo/xvsdk/src/main/cpp/xvsdk
├── android                                      
├── bin                                 
├── doc   
├── examples 
├── include 
├── include2 
├── libs 
├── unity-wrapper 
├── ChangeLog 
├── deploy-arm64-v8a.sh 
├── deploy-armeabi-v7a.sh   
├── deploy-x86_64.sh  
└── README.md                      
              

2.2 Complie

  1. Start "android-non-root-demo" with "Android Studio".

  2. Build->Make Project to compile project.Run->Run 'app' to install after compling.

  3. Connect XVisio deivce with Android device by USB. Android device will pop up selection dialog box after connecting successfully as below:

    image

  4. Start "xslam".

3 Code Introduction

3.1 Demo Directory

android-non-root-demo
├── app                                      -- main interface module
├── landmode                                 -- Horizontal screen mode module
└── xvsdk/src/main                           -- xvsdk module
    ├── cpp
    │   ├── wrapper                          -- xvsdk JNI interface   
    │   └── xvsdk                            -- Xvisio Android SDK(APK version)
    └── java                                 -- xvsdk java interface

3.2 Main File

File Description
xslam_android.cpp xvsdk JNI interface encapsulation
XCamera.java xvsdk java interfaces
ImuListener.java IMU data callback interface
PoseListener.java 6DOF data callback interface
RgbListener.java RGB data callback interface
TofListener.java TOF depth data callback interface
TofIrListener.java TOF IR depth data callback interface
StereoListener.java Fisheye data callback interface
SgbmListener.java Sgbm depth data callback interface

3.3 Code Analysis and Introduction

  1. Add permission for file "AndroidManifest.xml":
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.USB_PERMISSION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

    <uses-feature android:name="android.hardware.usb.host" />
    <uses-feature android:name="android.hardware.camera" />

  1. Add USB device monitoring setting in the main Activity in file "AndroidManifest.xml":
   <intent-filter>
      <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
   </intent-filter>

   <meta-data
      android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
      android:resource="@xml/usb_filter" />

  1. Initial SDK register device connect callback:
   XCamera mCamera = new XCamera();
   mCamera.init(mAppContext);
   mCamera.setDevicesChangedCallback(mListener);
  1. Get IMU data:
    ImuListener mImuListener = new ImuListener() {
        @Override
        public void onImu(double x, double y, double z) {

        }
    };
    mCamera.setImuCallback(mImuListener);
    mCamera.startStream(XCamera.Stream.IMU);
  1. Get SLAM 6DOF data:
    PoseListener mPoseListener = new PoseListener() {
        @Override
        public void onPose(double x, double y, double z, double pitch, double yaw, double roll) {

        }
    };
    mCamera.setPoseCallback(mPoseListener);
    mCamera.startStream(XCamera.Stream.SLAM);
  1. Get RGB data:
    RgbListener mRgbListener = new RgbListener() {
        @Override
        public void onFps(int fps) {

        }

        @Override
        public void onRgb(int width, int height, int[] pixels) {

        }
    };
    mCamera.setRgbCallback(mRgbListener);
    mCamera.startStream(XCamera.Stream.RGB);
  1. Get TOF data:
    TofListener mTofListener = new TofListener() {
        @Override
        public void onTof(int width, int height, int[] pixels) {
            
        }
    };
    TofListener mTofIrListener = new TofIrListener() {
        @Override
        public void onTofIr(int width, int height, int[] pixels) {
            
        }
    };
    mCamera.setTofCallback(mTofListener);
    mCamera.setTofIrCallback(mTofIrListener);
    mCamera.startStream(XCamera.Stream.TOF);
  1. Get fisheye data:
    StereoListener mStereoListener = new StereoListener() {
        @Override
        public void onStereo(int width, int height, int[] pixels) {

        }
    };
    mCamera.setStereoCallback(mStereoListener);
    mCamera.startStream(XCamera.Stream.STEREO);
  1. Get SGBM data:
    SgbmListener mSgbmListener = new SgbmListener() {
        @Override
        public void onSgbm(int width, int height, int[] pixels) {

        }
    };
    mCamera.setSgbmCallback(mSgbmListener);
    mCamera.startStream(XCamera.Stream.SGBM);

Code Samples and Wrappers
Xvisio SDK Documentation Home Page

android-non-root-demo

2 Build and Run

3 Code Introduction