版本间差异

2022-08-12
暂无评分

以下内容主要目的是将MSDK 4.X版本和MSDK 5.X版本中的核心接口做对比和说明,其中主要包含了DJIKey类型接口的对比说明,和几个核心模块的差异点说明,例如SDK注册管理类(SDKManager)、设备健康状态管理类(DeviceHealthManager)等,希望能帮助开发者快速了解和使用MSDK 5.X版本。

注意:

  1. 目前MSDK 4.X和5.X还不兼容,不能一起使用。
  2. MSDK 5.X 目前支持机型:M30 Series 和M300 RTK,且未来只计划支持部分DJI的新机型。

DJIKey差异说明

DJIKey

MSDK 5.X 大多数与设备交互的功能,都是基于DJIKey来实现的,一个DJIKey代表指定模块的具体功能。

在4.X上,大部分接口的本质是对DJIKey的封装,比如说Camera$startShootPhoto,其本质是CameraKey.START_SHOOT_PHOTO的应用。在后面对比表格中,对于4.X,只显示DJIKey,而不是接口。如有特别需要说明的情况,会特殊处理。

这里以FlightControllerState下的Motors中的方法areMotorsOn为例:先通过方法areMotorsOn在4.X文档open in new window中,搜到areMotorsOn的方法说明,然后查询到对应的4.X DJIKey. FlightControllerKey.ARE_MOTOR_ON,继而在迁移文档中找到方法areMotorsOn对应的5.X DJIKey。

对照指引.gif

区别:

功能描述
4.X5.X说明/区别
DJIKey操作KeyManagerIKeyManagerKey操作封装类
DJIKey创建各类Key Class中的create方法,如:CameraKey$create、CameraKey$createLensKey、FlightControllerKey$create等。KeyTools5.X的Key创建统一用Keytools中的相关接口
DJIKey-产品ProductKeyProductKey5.X是针对整机来说的
DJIKey-AirLinkAirLinkKeyAirLinkKeyAirLink相关
DJIKey-基站BaseStationKeyRtkBaseStationKeyRTK基站相关
DJIKey-电池BatteryKeyBatteryKey电池相关
DJIKey-相机CameraKeyCameraKey相机相关
DJIKey-飞控FlightControllerKeyFlightControllerKey飞控相关
DJIKey-云台GimbalKeyGimbalKey云台相关
DJIKey-激光雷达LidarKeyLidarKey激光雷达相关
DJIKey-DJI负载PayloadKeyPayloadKeyPayload负责相关
DJIKey-雷达RadarKeyRadarKey雷达相关
DJIKey-遥控RemoteControllerKeyRemoteControllerKey遥控相关

KeyManager

功能描述
4.X5.X说明/区别
读取数据KeyManager$getValueIKeyManager$getValue类似
设置数据KeyManager$setValueIKeyManager$setValue类似
执行ActionKeyManager$performActionIKeyManager$performAction类似
监听KeyManager$addListenerIKeyManager$listen5.X引入一个Holder的概念,开发者可以将一系列Listener实例绑定到Holder上,后面在释放监听时,可以通过IKeyManager$cancelListen(Object listenHolder)一并取消
取消监听KeyManager$removeListenerIKeyManager$cancelListen监听的说明
移除Key的数据KeyManager$removeKey5.X不支持该功能

如何CreateKey

在4.X上,DJIKey的create方法定义在各类模块Key中,这里以CameraKey来举例:

  1. 创建主位置的Key:CameraKey$create(String paramKey)
  2. 创建指定位置的Key:CameraKey$create(String paramKey, int componentIndex)
  3. 创建指定位置、指定镜头的Key:CameraKey$createLensKey(String paramKey, int componentIndex, int subComponentIndex)

在5.X上,DJIKey的create方法统一定义到KeyTools中,以CameraKey为例:

只有一种方法,创建指定位置、指定镜头的DJIKey:KeyTools$createCameraKey(DJIKeyInfo<T> mKeyInfo, ComponentIndexType componentIndexType, CameraLensType cameraLensType),相关DJIKey如果不指明镜头的话,就用CameraLensType.CAMERA_LENS_DEFAULT(在Kotlin上,DJIKeyInfo有扩展方法createCamera,cameraLensType默认值就是CameraLensType.CAMERA_LENS_DEFAULT)。

参数说明:

功能描述
4.X5.X说明/区别
DJIKey信息paramKeymKeyInfo描述DJIKey的基本信息。
相机位置componentIndexComponentIndexType相机位置,5.X上使用枚举来替代。
镜头位置subComponentIndexCameraLensType镜头位置,5.X上使用枚举来替代。

5.X的其他部分,请参考KeyTools文档:KeyToolsopen in new window

ProductKey映射关系

功能描述
4.X5.X说明/区别
产品连接ProductKey.CONNECTIONProductKey.KeyConnection类似

FligthControllerKey映射关系

功能描述(FligthController)
4.X5.X说明/区别
产品连接FlightControllerKey.CONNECTIONFlightControllerKey.KeyConnection类似
电机是否启动FlightControllerKey.ARE_MOTOR_ONFlightControllerKey.KeyAreMotorsOn类似
airSense 连接状态FlightControllerKey.AIR_SENSE_SYSTEM_CONNECTEFlightControllerKey.KeyAirSenseSystemConnected类似
airSense 信息FlightControllerKey.AIR_SENSE_SYSTEM_WARNING_LEVEL 、FlightControllerKey.AIR_SENSE_AIRPLANE_STATESFlightControllerKey.KeyAirSenseSystemInformation类似
飞机高度FlightControllerKey.ALTITUDEFlightControllerKey.KeyAltitude类似
起飞点高度FlightControllerKey.TAKEOFF_LOCATION_ALTITUDEFlightControllerKey.KeyTakeoffLocationAltitude类似
返航点高度FlightControllerKey.GO_HOME_HEIGHT_IN_METERSFlightControllerKey.KeyGoHomeHeight类似
Home点位置FlightControllerKey.HOME_LOCATION_LATITUDE、FlightControllerKey.HOME_LOCATION_LONGITUDEFlightControllerKey.KeyHomeLocation类似
当前高度FlightControllerKey.ALTITUDEFlightControllerKey.KeyAltitude类似
飞机位置FlightControllerKey.AIRCRAFT_LOCATION_LATITUDE、FlightControllerKey.AIRCRAFT_LOCATION_LONGITUDEFlightControllerKey.KeyAircraftLocation4.X经纬度分别是两个Key,5.X上为一个对象里包含两者数据
是否正在飞行FlightControllerKey.IS_FLYINGFlightControllerKey.KeyIsFlying类似
是否正在下降FlightControllerKey.IS_LANDINGFlightControllerKey.KeyIsInLandingMode类似
是否需要确认下降FlightControllerKey.IS_LANDING_CONFIRMATION_NEEDEDFlightControllerKey.KeyIsLandingConfirmationNeeded类似
强制降落高度FlightControllerKey.FORCE_LANDING_HEIGHTFlightControllerKey.KeyTouchDownConfirmLimitHeight类似
飞行模式字符串FlightControllerKey.FLIGHT_MODE_STRINGFlightControllerKey.KeyFlightModeString类似
降落保护状态FlightControllerKey.LANDING_PROTECTION_STATEFlightAssistantKey.KeyLandingProtectionState类似
低电量飞控行为FlightControllerKey.BATTERY_THRESHOLD_BEHAVIORFlightControllerKey.KeyBatteryThresholdBehavior类似
返航所需电量FlightControllerKey.BATTERY_PERCENTAGE_NEEDED_TO_GO_HOMEFlightControllerKey.KeyBatteryPercentNeededToGoHome类似

CameraKey映射关系

功能描述
(Camera)
4.X5.X说明/区别
连接状态CameraKey.CONNECTIONCameraKey.KeyConnection类似
开始拍照CameraKey.START_SHOOT_PHOTOCameraKey.KeyStartShootPhoto类似
停止拍照CameraKey.STOP_SHOOT_PHOTOCameraKey.KeyStopShootPhoto类似
自动曝光开关CameraKey.AE_LOCKCameraKey.KeyAELockEnabled类似
是否正在录像CameraKey.IS_RECORDINGCameraKey.KeyIsRecording类似
录制时长CameraKey.CURRENT_VIDEO_RECORDING_TIME_IN_SECONDSCameraKey.KeyRecordingTime类似
相机类型CameraKey.CAMERA_TYPECameraKey.KeyCameraType类似
存储类型CameraKey.CAMERA_STORAGE_LOCATIONCameraKey.KeyCameraStorageLocation类似
SD卡状态CameraKey.SDCARD_STATECameraKey.KeyCameraSDCardState类似
内部存储介质状态CameraKey.INNERSTORAGE_STATECameraKey.KeyInternalStorageState类似
当前SD卡可录制时长CameraKey.SDCARD_AVAILABLE_RECORDING_TIME_IN_SECONDSCameraKey .KeySSDAvailableRecordingTimeInSeconds类似
当前内部存储可录制时长CameraKey.INNERSTORAGE_AVAILABLE_RECORDING_TIME_IN_SECONDSCameraKey.KeyInternalStorageAvailableVideoDuration类似
开始录制CameraKey.START_RECORD_VIDEOCameraKey.KeyStartRecord类似
结束录制CameraKey.STOP_RECORD_VIDEOCameraKey.KeyStopRecord类似
自动包围曝光次数CameraKey.PHOTO_AEB_COUNTCameraKey.KeyAEBSettings4.X的count在5.X的PhotoAEBSettings类里
连拍次数CameraKey.PHOTO_BURST_COUNTCameraKey.KeyPhotoBurstCount类似
连拍设置CameraKey.PHOTO_TIME_INTERVAL_SETTINGSCameraKey.KeyPhotoIntervalShootSettings类似
raw格式连拍次数CameraKey.PHOTO_RAW_BURST_COUNTCameraKey.KeyRawBurstCount类似
全景模式CameraKey.PHOTO_PANORAMA_MODECameraKey.KeyPhotoPanoramaMode类似
是否正在拍照CameraKey.IS_SHOOTING_PHOTOCameraKey.KeyIsShootingPhoto类似
是否正在保存照片CameraKey.IS_STORING_PHOTOCameraKey.KeyCameraStoringFile类似
能否拍照CameraKey.IS_SHOOTING_PHOTO_ENABLEDCameraKey.KeyShootPhotoNotAllowed类似
是否正在拍照全景照片CameraKey.IS_SHOOTING_PANORAMA_PHOTOCameraKey.KeyIsShootingPhotoPanorama类似
曝光模式CameraKey.EXPOSURE_MODECameraKey.KeyExposureMode类似
曝光模式范围CameraKey.EXPOSURE_MODE_RANGECameraKey.KeyExposureModeRange类似
ISO设置CameraKey.ISOCameraKey.KeyISO类似
ISO设置范围CameraKey.ISO_RANGECameraKey.KeyISORange类似
曝光设置CameraKey.EXPOSURE_SETTINGSCameraKey.KeyExposureSettings类似
曝光感光度设置CameraKey.EXPOSURE_SENSITIVITY_MODECameraKey.KeyExposureSensitivityMode类似
EI值CameraKey.EI_VALUECameraKey.KeyEI类似
推荐EI值CameraKey.RECOMMENDED_EI_VALUECameraKey.KeyRecommendedEI类似
EI值范围CameraKey.EI_VALUE_RANGECameraKey.KeyEIRange类似
相机模式CameraKey.MODE/CameraKey.FLAT_CAMERA_MODECameraKey.KeyCameraMode5.X对4.X 两个ModeKey做了统一处理,整合成一个
图传视频源CameraKey.CAMERA_VIDEO_STREAM_SOURCECameraKey.KeyCameraVideoStreamSource类似
对焦模式CameraKey.FOCUS_MODECameraKey.KeyCameraFocusMode类似
测光模式CameraKey.METERING_MODECameraKey.KeyCameraMeteringMode类似
对焦目标CameraKey.FOCUS_TARGETCameraKey.KeyCameraFocusTarget类似
点测光目标CameraKey.SPOT_METERING_TARGETCameraKey.KeySpotMeteringTargetPoint类似

GimbalKey映射关系

功能描述
(Gimbal)
4.X5.X说明/区别
云台连接状态GimbalKey.CONNECTIONGimbalKey.KeyConnection类似
云台姿态GimbalKey.ATTITUDE_IN_DEGREESGimbalKey.KeyGimbalAttitude类似
旋转云台GimbalKey.ROTATEGimbalKey.KeyRotateBySpeed、GimbalKe.KeyRotateByAngle5.X抽离了模式,变成了两个Key

RemoteControlKey映射关系

功能描述
(RemoteControl)
4.X5.X说明/区别
遥控模式RemoteControllerKey.MODERemoteControllerKey.KeyRcMachineMode类似
连接事件RemoteControllerKey.CONNECTIONRemoteControllerKey.KeyConnection类似
电池状态RemoteControllerKey.BATTERY_STATERemoteControllerKey.KeyBatteryInfo类似
是否低电量RemoteControllerKey.IS_CHARGE_REMAINING_LOWRemoteControllerKey.KeyBatteryInfo需要开发者根据当前电量自己算,4.X时小于30%为低。
遥控GPS信息RemoteControllerKey.GPS_DATARemoteControllerKey.KeyRcGPSInfo类似
遥控模式设置RemoteControllerKey.AIRCRAFT_MAPPING_STYLERemoteControllerKey.KeyControlMode相比4.X,5.X更直接,可以通过枚举明确遥控模式。

RTKKey映射关系

功能描述
(RTK)
4.X5.X说明/区别
Home点数据源FlightControllerKey.RTK_FUSION_HOME_LOCATION_DATA_SOURCERtkMobileStationKey.KeyRTKHomePointInfo类似
起飞高度是否设置FlightControllerKey.RTK_FUSION_HAS_SET_TAKE_OFF_ALTITUDERtkMobileStationKey.KeyRTKTakeoffAltitudeInfo类似
是否启用RTKFlightControllerKey.RTK_ENABLEDRtkMobileStationKey.KeyRTKEnable类似
是否支持RTKFlightControllerKey.IS_RTK_SUPPORTEDFlightControllerKey.KeyIsRtkSupported类似
RTK是否连接FlightControllerKey.IS_RTK_CONNECTEDRtkMobileStationKey.KeyConnection类似

BatteryKey映射关系

功能描述
(Battery)
4.X5.X说明/区别
电池温度BatteryKey.TEMPERATUREBatteryKey.KeyBatteryTemperature类似
电池电量BatteryKey.CHARGE_REMAINING_IN_PERCENTBatteryKey.KeyChargeRemainingInPercent类似
电池电压BatteryKey.CELL_VOLTAGESBatteryKey.KeyCellVoltages类似
异常信息BatteryKey.LATEST_WARNING_RECORDBatteryKey.KeyBatteryException5.X都集中在这个Key中
整合信息BatteryKey.AGGREGATION_STATEBatteryKey.KeyNumberOfConnectedBatteries、BatteryKey.KeyIsAnyBatteryDisconnected、BatteryKey.KeyIsCellDamaged、BatteryKey.KeyIsFirmwareDifferenceDetected、BatteryKey.KeyIsVoltageDifferenceDetected、BatteryKey.KeyIsLowCellVoltageDetected、BatteryKey.KeyBatteryOverviews4.X上读取的是多电池的聚合信息,在5.X上,创建DJIKey时,传入ComponentIndexType.AGGREGATION

DJI核心模块差异说明

ISDKManager

ISDKManager为MSDK入口管理类,相对于4.X做了简化。请参考这篇文章:快速入门open in new window,其中介绍了注册、配置、APP_Key申请以及示例代码的使用。

功能描述
4.x5.x说明/区别
注册/激活DJISDKManager$registerAppSDKManager$init 和 SDKManager$registerApp5.x抽离了init部分,开发者需要在应用启动后,有且仅调用一次init。
设备连接事件SDKManagerCallback$onComponentChange使用各类Key 的KeyConnection,如:CameraKey.KeyConnection、FlightControllerKey.KeyConnection5.x通过各模块的KeyConnection来监听设备连接事件

虚拟摇杆模块

虚拟摇杆4.X和5.X接口层面差异较多,请参考5.X文档:虚拟摇杆open in new window

如果原来使用DJIKey实现的话,有如下对比:

功能描述(VirtualStick)
4.X5.X说明/区别
开/关虚拟摇杆FlightControllerKeys.VIRTUAL_STICK_CONTROL_MODE_ENABLEDFlightControllerKey.KeyVirtualStickEnabled类似
发送虚拟摇杆数据FlightControllerKeys.SEND_VIRTUAL_STICK_FLIGHT_CONTROL_DATAFlightControllerKey.KeySendVirtualStickFlightControlData整体数据类似

图传模块

相比于4.X,5.X图传简化了不少操作,请参考5.X文档:图传open in new window

直播模块

相比于4.X,5.X直播功能更丰富,支持的协议更多,请参考5.X文档:直播open in new window

诊断管理模块

在5.X上,错误诊断通过IDeviceHealthManager来完成,请参考5.X文档:诊断管理open in new window

参数对比:

描述
4.X5.X说明/区别
错误码DJIDiagnostics$getCodeDJIDeviceHealthInfo$informationCode相对于4.X,5.X的HMS错误码更方便查阅、更全面、更多。
错误描述DJIDiagnostics$getReason、DJIDiagnostics$getSolutionDJIDeviceHealthInfo$title、DJIDeviceHealthInfo$description5.X统一为title以及错误描述(支持中英文)。

模拟器模块

模拟器请参考5.X文档:模拟器open in new window

媒体文件模块

媒体文件请参考5.X文档:多媒体open in new window

航线模块

当前航线通过KMZ文件发送到飞机,请参考5.X文档:航线open in new window

RTK模块

RTK请参考5.X文档:RTKopen in new window

LDM模块

LDM请参考5.X文档:LDMopen in new window