大疆已经将 Spark(晓Spark)系列无人机的 SDK 统一到了其全新的 DJI Mobile SDK 体系下。 你现在找不到一个独立的 "Spark SDK" 安装包了,所有针对 Spark(以及 Mavic Air, Mavic 2, Mini 系列等)的开发,都使用最新版的 DJI Mobile SDK。

当开发者谈论 "Spark SDK" 时,他们实际上指的是 适用于 Spark 无人机的 DJI Mobile SDK。
什么是 DJI Mobile SDK?
DJI Mobile SDK 是大疆官方提供的软件开发工具包,允许开发者在移动应用程序(iOS 和 Android)中集成大疆无人机的核心功能,通过它,你可以:
- 获取无人机和遥控器的实时数据:如电池电量、GPS 信号、飞行速度、高度、相机姿态等。
- 控制无人机飞行:如起飞、降落、悬停、返航、设置航点、执行自动飞行任务。
- 控制相机和云台:如拍照、录像、调整相机参数(曝光、ISO、快门等)、控制云台转动(俯仰、航向)。
- 处理视频流:在手机上实时接收无人机的 FPV (First Person View) 图像,并进行二次开发(如图像识别、AR 增强现实叠加)。
- 接收来自无人机的数据流:如遥测数据、视频流等。
Spark SDK (DJI Mobile SDK) 的核心功能模块
SDK 的功能被封装在不同的模块中,你可以根据需要引入,对于 Spark 开发,最核心的模块包括:
DJISDK
这是最基础、最核心的模块,它负责:

- App 注册与鉴权:让你的 App 与大疆服务器建立连接,这是使用所有 SDK 功能的前提。
- 发现并连接设备:搜索周围的无人机、遥控器、智能飞行电池等设备。
- 获取 SDK 版本和产品信息。
DJISDKManager
一个全局的管理器类,用于初始化 SDK、管理连接状态和提供对其他功能模块的访问入口,你的 App 通常需要先初始化这个管理器。
DJIAircraft (飞机) & DJIFlightController (飞行控制器)
这是控制飞行的核心模块。
- 状态获取:获取无人机的飞行状态(是否在空中、是否失控)、GPS 状态、电池状态、当前速度、高度、位置等。
- 飞行控制:执行
takeoff()(起飞),landing()(降落),stop()(悬停),goHome()(智能返航) 等基本指令。 - 手动控制:通过发送
Roll,Pitch,Throttle,Yaw四个轴的值来精确控制无人机的移动。
DJICamera (相机) & DJICameraManager
这是控制相机的核心模块。
- 拍照与录像:
startShootPhoto(),startRecordVideo(),stopRecordVideo()。 - 相机设置:设置照片格式、视频分辨率、曝光模式、ISO、快门速度、EV 值等。
- 云台控制:控制云台的俯仰角,如
setPitch()。
DJIMediaManager (媒体管理器)
用于处理无人机存储卡中的媒体文件。

- 文件列表:获取存储卡中的所有照片和视频列表。
- 文件下载:将照片或视频从无人机下载到手机。
- 文件删除:删除无人机存储卡中的文件。
DJIVideoFeeder (视频流)
用于接收无人机传回的实时视频流。
- 获取视频源:获取主相机或副相机的视频流。
- 视频预览:在
SurfaceView或TextureView上显示 FPV 画面,这是进行图像识别、AR 叠加等高级应用的基础。
如何开始使用 Spark SDK (DJI Mobile SDK)?
开发者注册
- 访问 大疆开发者官网。
- 注册一个开发者账号。
- 在控制台创建一个新的 App,获取 App Key,这个 App Key 是你的应用在连接大疆设备和服务器时的身份凭证。
环境准备
- Android Studio / Xcode: 使用主流的 IDE 进行开发。
- 设备:
- 一部运行 Android 7.0+ 或 iOS 11+ 的智能手机或平板。
- 一架 Spark 无人机 及其遥控器。
- 注意: Spark 无人机固件需要较新的版本才能支持最新的 SDK,请确保固件已更新。
SDK 集成 (以 Android 为例)
-
添加依赖:在
build.gradle文件中添加 DJI SDK 的 Maven 仓库和依赖。allprojects { repositories { ... maven { url 'https://maven.dji.com/repository/dji-sdk/' } } } dependencies { implementation 'dji-sdk:flycontroller-sdk:5.8.2' // 包含飞行控制器 implementation 'dji-sdk:camera-sdk:5.8.2' // 包含相机 implementation 'dji-sdk:media-sdk:5.8.2' // 包含媒体管理 implementation 'dji-sdk:video-sdk:5.8.2' // 包含视频流 // ... 其他需要的模块 } -
配置 App Key:在
Application类的onCreate()方法中注册你的 App Key。DJISDKManager.getInstance().registerApp(this, new DJISDKManager.SDKManagerCallback() { @Override public void onRegister(DJIError error) { if (error == null) { Log.d("DJISDK", "App 注册成功"); } else { Log.e("DJISDK", "App 注册失败: " + error.getDescription()); } } @Override public void onProductConnect(BaseProduct product) { if (product != null && product.isConnected()) { Log.d("DJISDK", "设备已连接: " + product.getModel()); // 连接成功后,可以开始获取各个模块的实例 } } @Override public void onProductDisconnect(BaseProduct product) { Log.d("DJISDK", "设备已断开"); } });
编写代码
- 连接设备:确保无人机和遥控器开机,手机连接到遥控器的 Wi-Fi,SDK 会自动发现设备。
- 调用 API:通过
DJISDKManager获取DJIAircraft,DJICamera等模块的实例,然后调用相应的方法来获取数据或控制无人机。
Spark SDK 的应用场景
利用 Spark SDK,你可以开发出非常有趣和实用的应用:
-
航拍 App 增强工具:
- 自定义相机控制面板:开发一个比官方 App 更符合个人习惯的相机操作界面。
- 智能拍摄模式:结合 AI 图像识别,实现手势拍照、人脸跟踪、自动构图等。
- 数据叠加:在 FPV 画面上实时叠加飞行高度、距离、速度、电池电量等关键信息。
-
行业应用:
- 农业植保:虽然 Spark 载重有限,但可以用于小面积的农药喷洒试验或数据采集。
- 巡检测绘:用于电力线路、风力发电机、桥梁等基础设施的近距离巡检,通过 SDK 获取高精度数据和照片。
- 安防监控:开发一键起飞、自动巡航、实时画面回传的安防监控应用。
-
教育与娱乐:
- 编程教学:让学生通过编写代码控制无人机,学习编程逻辑和传感器原理。
- FPV 游戏:开发基于 FPV 画面的 AR 游戏或竞速应用。
重要注意事项与限制
- SDK 版本与固件版本:SDK 和无人机固件需要兼容,大疆会发布新版本的 SDK 来支持新固件的功能,反之亦然,开发前务必查阅官方文档,确认版本对应关系。
- iOS 签名:在 iOS 平台上,你需要将你的 App Bundle ID 和 Team ID 提交给大疆,他们会为你生成一个签名的
.framework文件,你需要将其集成到你的 Xcode 项目中,这个过程比 Android 更复杂。 - 网络连接:App 必须连接到遥控器的 Wi-Fi 才能与无人机通信。
- 官方文档是圣经:DJI 的官方文档 (docs.dji.com) 是最权威、最全面的学习资料,几乎所有的 API 用法、示例代码和常见问题都能在上面找到。
- Spark 的局限性:作为一款较老的无人机,Spark 的处理器性能、相机分辨率、图传距离等都无法与新机型相比,它更适合用于学习 SDK 基础概念和开发一些对性能要求不高的应用。
Spark SDK = 适用于 Spark 的 DJI Mobile SDK,它是一套功能强大但文档严谨的工具,对于开发者来说,虽然入门需要一定的学习成本,但一旦掌握了核心流程,就能利用它创造出许多激动人心的无人机应用。
建议:如果你是初学者,可以先从 DJI Mobile SDK 的官方示例代码 开始运行,理解其工作流程,然后再尝试修改和扩展,开发自己的功能。
