SDK管理器具有注册应用程序、连接产品与获取产品实例、SDK调试、日志,以及获取各类其他管理器等功能,可进行软件注册、用户认证等一些通用性、全局性的基本操作。在Android中,SDK管理器是一个单例类,通过其getInstance()方法即可获取其实例。在iOS中,SDK管理器的所有功能均采用其相应的类方法(无实例方法)实现。通过SDK管理器直接或者间接地获取到产品(Product)、组件(Component)、任务控制器(Mission Control)和各种任务(Mission)类的实例对象,因此SDK管理器是整个Mobile SDK的核心类。
为了保障飞行安全,每个使用Mobile SDK的应用程序需要通过注册后才可以正常使用,否则无法正常连接大疆无人机。注册应用程序包括申请应用程序密钥和联网注册应用程序两个部分,会分别在“2.3.3申请应用程序密钥”和“第3章 第一个Mobile SDK应用程序”中介绍。
在注册应用程序之后,通过SDK管理器即可开始连接无人机,并取得相应的实例对象。通过无人机实例对象还可以获取其各个组件的实例,并进行相应的控制操作。
除SDK管理器以外,Mobile SDK还包括用于特定功能的管理器类。
(1)键值管理器(KeyManager):键值管理器可采用键值对的方法获取设备的各项参数设置或执行动作。在Android中,该管理器实例需要通过SDK管理器的getKeyManager()方法获取;在iOS中,该管理器实例需要通过SDK管理器的keyManager属性获取。
(2)飞行区域管理器(FlyZoneManager):用于管理无人机的飞行区域,包括解锁限制飞行的区域、更新限飞数据库等功能。在Android中,该管理器实例需要通过SDK管理器的getFlyZoneManager()方法获取。在Android中,该管理器实例需要通过SDK管理器的flyZoneManager属性获取。
(3)应用程序激活管理器(AppActivationManager):用于中国大陆用户进行实名制认证,并激活应用程序。在中国大陆范围内使用无人机,需要登录经过实名制认证的DJI账号来激活应用程序,并且需要通过DJI账户绑定无人机,否则无法使用无人机图传,且被限高30m、限远100m。在Android中,该管理器示例需要通过SDK管理器的getAppActivationManager()方法获取。在iOS中,该管理器示例需要通过SDK管理器的appActivationManager属性获取。
(4)用户账户管理器(UserAccountManager):用于登录与注销DJI账户。在Android中,该管理器需要通过其getInstance()方法获取其单例对象。在iOS中,该管理器示例需要通过SDK管理器的userAccountManager属性获取。
(5)数据保护管理器(DataProtectionManager):用于管理与授权上传飞行信息到DJI服务器。在Android中,该管理器需要通过其getInstance()方法获取其单例对象。在iOS中,该管理器示例需要通过SDK管理器的dataProtectionManager属性获取。
(6)本地数据模式管理器(LDMManager):用于开启本地数据模式(Local Data Mode,LDM)。在本地数据模式下,除注册应用程序外,Mobile SDK不会访问互联网,也不能更新固件和更新限制飞行区域。LDM模式在中国大陆范围内不可用。在Android中,该管理器实例需要通过SDK管理器的getLDMManager()方法获取。在iOS中,该管理器实例需要通过SDK管理器的ldmManager属性获取。
(7)大疆司空管理器(FlightHubManager):大疆司空是一个在线的用于实时任务管理、远程直播和控制的无人机综合管理平台。该管理器用于连接大疆司空服务器,并上传与下载飞行数据。读者可从https://www.dji.com/cn/flighthub网页上了解大疆司空平台的更多信息。在Android中,该管理器实例需要通过SDK管理器的getFlightHubManager()方法获取。在iOS中,该管理器实例需要通过SDK管理器的flightHubManager属性获取。
(8)直播管理器(LiveStreamManager):用于将图传信息以RTMP服务器的形式在互联网上实时共享,仅在Android中可用。在Android中,该管理器实例需要通过SDK管理器的getLiveStreamManager()方法获取。
(9)更新管理器(UpgradeManager):用于管理和更新御2系列、御Air等无人机的组件固件。在Android中,该管理器实例需要通过SDK管理器的getUpgradeManager()方法获取。在iOS中,该管理器实例需要通过SDK管理器的upgradeManager属性获取。
可见,在Android中,除了用户账户管理器与数据保护管理器以外,其他的管理器类均需要通过SDK管理器获得实例。在iOS中,SDK管理器是所有管理器实例的绝对入口。