SDK 架构体系概述
Mobile SDK的体系结构被设计为高度可扩展的,其中使用了抽象产品类和组件类,以便应用程序可以使用相同的代码控制不同的产品。对于一些没法在不同产品中保持一致性的功能可以在运行时被查询调用,对于一些能保持一致性的功能则直接可以工作了。
例如,Phantom和Inspire系列产品的绝大多数功能是一致的。因此,为适配Phantom 4而编写的应用程序,除Inspire 1的一些独特功能外,将可以直接在Inspire 1机型上使用。
这也意味着当新产品发布时,就已经可以与现有的应用程序一起使用了(需要使用支持该新产品的最新SDK)。新产品中的任何新功能都需要添加到应用程序中,但是所有现有功能都不需要做修改了。
层级架构
移动应用程序一般通过下图所示的几个主要类来访问Mobile SDK:

SDKManager: MSDK工具包的入口类,管理MSDK的初始化,反初始化,MSDK注册,以及监听DJI硬件产品的连接事件。
KeyTools / KeyManager: MSDK V5版本使用了以Key为基础元素的参数设置和参数获取功能接口,KeyTools是创建Key的入口类,KeyManager是调用或者监听Key的入口类,大多数的功能都可以通过相应的Key来控制,例如控制云台旋转或者控制相机拍照、录像等。
MediaDataCenter: 应用数据获取功能的入口类,通过MediaDataCenter可以获取到原始的码流数据管理类,以及多媒体文件数据的管理类。
WaypointMissionManager: 航点任务自动飞行的入口类,可以控制无人机基于航点的自主飞行。
VirtualStickManager: 虚拟摇杆飞行入口类,可以控制无人机进入虚拟摇杆控制模式,进入此模式之后可以通过实时发送动作命令的形式控制无人机飞行。
FlightLogManager: 飞行日志管理类,可以获取手机端存储的日志路径。
DeviceHealthManager: 设备健康管理模块,通过此类可以实时获取到设备的健康状态以提醒无人机的操纵者。
智能任务
智能任务可以轻松实现飞行自动化。其中基于航点和航点动作定义的航点飞行任务(WaypointMission)可以使无人机沿着定义好的航点和航点动作来自动飞行,使用WaypointMissionManager来控制航点任务的执行过程,航点动作和航点任务可以由KMZ文件定义,可参考大疆航线文件格式。
基于实时命令的虚拟摇杆飞行功能,也可以让飞机实现自动飞行,开发者可以基于自己的算法,调用VirtualStickManager中的接口来控制无人机进行自主飞行。相关更多详细信息,请查看智能任务。