第一部分:核心概念与准备工作
在开始编码之前,理解一些核心概念至关重要。

为什么使用 DJI SDK?
大疆 SDK 提供了强大的功能,让你可以:
- 获取实时数据:如无人机经纬度、高度、电量、图传信号、相机参数(光圈、快门、ISO)等。
- 控制飞行器:如起飞、降落、悬停、返航、设置航点、执行自动飞行任务。
- 控制相机:如拍照、录像、变焦、设置曝光参数、云台控制(俯仰、旋转)。
- 处理视频流:获取无人机的实时图传画面,进行二次开发(如目标检测、图像分析)。
- 地图与定位:集成地图服务,在地图上显示飞行器的实时位置和预规划航线。
核心组件
- 飞行控制器:无人机的“大脑”,负责飞行控制,SDK 通过与它通信来获取飞行状态和控制飞行。
- 云台相机:负责拍摄,SDK 通过与它通信来控制相机和云台。
- 遥控器:用户与无人机交互的设备。
- 移动端/端上 App:运行你的应用程序的平台,如 iOS (Swift/Objective-C) 或 Android (Java/Kotlin)。
SDK 的主要类型
大疆提供了多种 SDK,以满足不同的开发需求:
| SDK 名称 | 适用平台 | 主要功能 | 难度 | 适用场景 |
|---|---|---|---|---|
| Mobile SDK | iOS, Android | 核心 SDK,提供飞行控制、相机控制、实时图传、地图、航点飞行等全部功能。 | ★★★☆☆ | 主流选择,开发手持端 App、行业应用(如测绘、巡检)。 |
| Onboard SDK | Linux (如 NVIDIA Jetson) | 运行在无人机机载计算机上,允许无人机自主执行任务,无需持续与地面站通信。 | ★★★★☆ | 高级自主飞行、集群控制、机载 AI 处理。 |
| Payload SDK | C++ | 用于开发挂载在无人机上的第三方载荷(如相机、传感器)的软件。 | ★★★★☆ | 开发非大疆原厂的机载设备。 |
| Windows SDK | Windows | 用于开发 PC 端地面站软件。 | ★★★☆☆ | 开发地面控制站、数据分析软件。 |
对于绝大多数开发者来说,从 Mobile SDK 开始是最佳选择。
第二部分:Mobile SDK 开发实战(以 Android 为例)
我们将以最常用的 Mobile SDK 为例,走完一个完整的开发流程。

步骤 1:环境搭建
-
开发环境:
- Android Studio: 最新版本。
- Java JDK: SDK 通常要求 JDK 8 或更高版本。
- Android SDK: API 级别建议 26 (Oreo) 或更高。
-
获取 SDK:
- 访问大疆开发者官网:https://developer.dji.com/
- 注册并登录开发者账户。
- 在“资源”或“下载”页面找到 Mobile SDK,下载最新的 SDK 包(通常是一个
.zip文件)。
-
配置项目:
-
解压 SDK:将下载的 SDK 包解压,你会看到
SDK文件夹,里面有jar包和so(动态链接库) 文件。
(图片来源网络,侵删) -
添加依赖:
- 将
jar包复制到你的 Android 项目的app/libs目录下。 - 在
app/build.gradle文件的dependencies代码块中添加:implementation files('libs/dji-sdk.jar')
- 将
-
配置
so库:- 将
so文件夹复制到app/src/main/jniLibs目录下,如果目录不存在,请手动创建,确保so文件夹下的子文件夹架构(如armeabi-v7a,arm64-v8a)与你的项目支持的平台一致。
- 将
-
添加权限和声明:
-
在
app/src/main/AndroidManifest.xml文件中添加必要的权限和 SDK 初始化所需的声明。<!-- 必要的权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- 声明 DJI 产品 --> <uses-feature android:name="android.hardware.camera.any" android:required="false" /> <uses-feature android:name="android.hardware.usb.host" android:required="false" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> <!-- 注册 DJI Application --> <application ...> <meta-data android:name="com.dji.sdk.APP_KEY" android:value="你的APP_KEY" /> </application>
-
-
步骤 2:注册与获取 App Key
- 在大疆开发者后台创建一个新的应用。
- 填写应用名称、选择平台(iOS/Android)。
- 创建成功后,系统会生成一个唯一的 App Key。
- 将这个 App Key 复制到
AndroidManifest.xml文件的meta-data中,这是 SDK 能够正常工作的前提。
步骤 3:SDK 初始化
这是所有功能的第一步,通常在你的 Application 类的 onCreate() 方法中完成。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 初始化 SDK
DJISDKManager.getInstance().initSDKManager(this, new SDKManagerCallback() {
@Override
public void onInitProcess(DJISDKManager sdkManager, int i) {
// SDK 初始化进度回调
Log.d("DJI", "Init Process: " + i);
}
@Override
public void onProductConnected(Product product) {
// 当飞行器或遥控器连接成功时调用
Log.d("DJI", "Product Connected: " + product.getModel());
// 连接成功后,可以开始注册状态监听器
}
@Override
public void onProductDisconnected() {
// 当飞行器或遥控器断开连接时调用
Log.d("DJI", "Product Disconnected");
}
});
}
}
重要:在 AndroidManifest.xml 中将 MyApplication 设置为你的应用主类:
<application
android:name=".MyApplication"
...>
</application>
步骤 4:核心功能实现
SDK 的核心是监听和控制,你需要为不同的对象(如飞行器、相机)注册监听器,然后通过 SDK 提供的方法进行控制。
示例:获取飞行器状态并控制起飞
-
注册监听器: 你需要获取一个
Product对象,然后从中获取Aircraft对象。// 在 onProductConnected 回调中 if (product != null && product.getModel() != null) { // 获取飞行器实例 Aircraft aircraft = (Aircraft) product; // 注册飞行器状态监听器 aircraft.getFlightController().setStateCallback(new FlightControllerStateCallback() { @Override public void onUpdate(FlightControllerState state) { // 在这里获取飞行器状态 double altitude = state.getAltitude(); // 获取高度(单位:米) Log.d("DJI", "Current Altitude: " + altitude + "m"); } }); } -
执行控制命令: 同样,通过
Aircraft对象获取FlightController,然后调用其方法。// 在某个按钮的点击事件中 public void onTakeoffButtonClick(View view) { Aircraft aircraft = (Aircraft) DJISDKManager.getInstance().getProduct(); if (aircraft != null && aircraft.getFlightController() != null) { // 检查飞行器是否在地面且电机已就绪 if (aircraft.getFlightController().getState().isOnGround() && aircraft.getFlightController().getState().isMotorRunning()) { // 执行起飞命令 aircraft.getFlightController().takeoff(result -> { if (result) { Log.d("DJI", "Takeoff Success!"); } else { Log.e("DJI", "Takeoff Failed!"); } }); } } }
其他常用功能:
-
相机控制:
// 获取相机 Camera camera = aircraft.getCamera(); // 拍照 camera.startShootPhoto(); // 录像 camera.startRecordVideo(); // 控制云台 camera.getGimbal().rotate(GimbalRotation.newInstance(0, 30, 0, 100)); // 俯仰30度
-
航点飞行: 这是 SDK 的一个高级功能,你需要创建一个
WaypointMission对象,设置一系列航点(经纬度、高度、速度、航向等),然后上传给飞行器并执行。
第三部分:关键开发流程与最佳实践
连接管理
用户必须通过遥控器或 Wi-Fi 将无人机连接好,你的 App 需要提供一个界面让用户选择并连接设备,SDK 提供了 DJISDKManager.startConnectionToProduct() 方法来启动连接流程。
生命周期管理
- 注册与注销:务必在 Activity/Fragment 的
onResume()中注册必要的监听器,在onPause()或onDestroy()中注销它们,以避免内存泄漏和无效回调。 - 权限检查:在 Android 6.0 (API 23) 以上,动态权限(如存储、位置)必须在运行时请求。
错误处理
SDK 的几乎所有异步方法都返回一个 CommonCallbacks.CompletionCallback,其中包含一个 DJError 对象。始终检查这个错误对象,它包含了失败的原因,对于调试至关重要。
camera.startShootPhoto(result -> {
if (result == null) {
// 操作成功
} else {
// 操作失败
Log.e("DJI_ERROR", "Error Code: " + result.errorCode() + ", Description: " + result.description());
}
});
线程注意
SDK 的回调通常在非 UI 线程中执行,如果你需要在回调中更新 UI,请务必使用 runOnUiThread 或 Handler 切换到主线程。
**第四部分:进阶学习与资源
官方文档
这是最重要的资源!大疆官方文档非常详细,包含了所有类的 API 说明、代码示例和教程。
- Mobile SDK 文档: https://developer.dji.com/doc/mobile-sdk-cn/
示例代码
SDK 包中通常包含完整的示例项目,这是学习如何将各个部分组合起来的最佳途径,仔细研究示例代码,特别是 DemoApplication 和各个 Activity 的实现。
开发者社区
- 大疆开发者论坛:https://dev-forum.dji.com/ 在这里你可以提问、分享经验,查看官方公告和其他开发者遇到的问题,遇到问题时,先在论坛搜索,很可能已经有解决方案。
视频教程
B站、YouTube 上有很多大疆 SDK 的视频教程,对于初学者来说,跟着视频一步步操作可以快速上手。
大疆 SDK 开发是一个系统性工程,遵循以下路径可以让你事半功倍:
- 明确目标:确定你要开发的应用类型(航拍、测绘、巡检等)。
- 选择 SDK:从 Mobile SDK 开始。
- 环境搭建:正确配置 Android Studio 和 SDK 依赖。
- 注册 App Key:这是 SDK 运行的钥匙。
- 掌握核心:理解 初始化 -> 连接 -> 监听 -> 控制 的流程。
- 查阅文档:官方文档是你的第一参考。
- 动手实践:从简单的“获取状态”开始,逐步尝试“控制飞行”、“拍照”和“航点飞行”。
- 加入社区:遇到问题时,不要独自摸索。
祝你开发顺利!
标签: 大疆无人机SDK开发入门教程 大疆SDK开发新手指南 大疆无人机SDK零基础学习