← Xvisio 代码示例
← Xvisio SDK 文档主页
android-non-root-demo 工程演示了如何使用 Xvisio Android SDK(APK版本)开发 Android apk 应用程序。
defaultConfig {
versionCode 3xxx
versionName "3.x.x-xxxxxxxx"
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
启动 Android Studio 打开 android-non-root-demo 工程。
Build->Make Project 编译工程,编译完成后 Run->Run 'app' 安装 apk。
使用USB连接 XVisio 设备和 android 设备,连接成功后,android 设备会弹出USB设备选择对话框,见下图:
选择 xslam 打开应用程序。
android-non-root-demo
├── app -- 主界面模块
├── landmode -- 横屏模式模块
└── xvsdk/src/main -- xvsdk 模块
├── cpp
│ ├── wrapper -- xvsdk JNI 接口
│ └── xvsdk -- Xvisio Android SDK(APK版本)
└── java -- xvsdk java 接口
文件 | 描述 |
---|---|
xslam_android.cpp | xvsdk JNI 接口封装文件 |
XCamera.java | xvsdk java 接口类 |
ImuListener.java | IMU 数据回调接口 |
PoseListener.java | 6DOF 数据回调接口 |
RgbListener.java | RGB 相机数据回调接口 |
TofListener.java | TOF 深度数据回调接口 |
TofIrListener.java | TOF IR 深度数据回调接口 |
StereoListener.java | 双目鱼眼相机数据回调接口 |
SgbmListener.java | Sgbm 深度数据回调接口 |
<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" />
<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" />
XCamera mCamera = new XCamera();
mCamera.init(mAppContext);
mCamera.setDevicesChangedCallback(mListener);
ImuListener mImuListener = new ImuListener() {
@Override
public void onImu(double x, double y, double z) {
}
};
mCamera.setImuCallback(mImuListener);
mCamera.startStream(XCamera.Stream.IMU);
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);
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);
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);
StereoListener mStereoListener = new StereoListener() {
@Override
public void onStereo(int width, int height, int[] pixels) {
}
};
mCamera.setStereoCallback(mStereoListener);
mCamera.startStream(XCamera.Stream.STEREO);
SgbmListener mSgbmListener = new SgbmListener() {
@Override
public void onSgbm(int width, int height, int[] pixels) {
}
};
mCamera.setSgbmCallback(mSgbmListener);
mCamera.startStream(XCamera.Stream.SGBM);