# DJI Mobile SDK V5 5.7.0 to 5.8.0 Differences

## API changes

5.7.0 Parent and Name | 5.7.0 Code | 5.8.0 Parent and Name | 5.8.0 Code | Parent | Name | Type | Param | Return
dji.v5.manager.aircraft.uas.RemoteIdWorkingState.UNKNOWN_ERROR | UNKNOWN_ERROR(65535) | dji.v5.manager.aircraft.uas.RemoteIdWorkingState.NOT_SUPPORTED | NOT_SUPPORTED(5) |  | X |  |  |

## APIs added to 5.8.0

Parent and Name | Code
dji.v5.manager.interfaces.ICameraStreamManager | interface ICameraStreamManager
dji.v5.manager.interfaces.ICameraStreamManager.AvailableCameraUpdatedListener | interface AvailableCameraUpdatedListener
dji.v5.manager.interfaces.ICameraStreamManager.AvailableCameraUpdatedListener.onAvailableCameraUpdated | void onAvailableCameraUpdated(@NonNull List<ComponentIndexType> availableCameraList)
dji.v5.manager.interfaces.ICameraStreamManager.CameraFrameListener | interface CameraFrameListener
dji.v5.manager.interfaces.ICameraStreamManager.CameraFrameListener.onFrame | void onFrame(@NonNull byte[] frameData, int offset, int length, int width, int height, @NonNull FrameFormat format)
dji.v5.manager.interfaces.ICameraStreamManager.FrameFormat | enum FrameFormat
dji.v5.manager.interfaces.ICameraStreamManager.FrameFormat.NV21 | NV21(ImageFormat.NV21)
dji.v5.manager.interfaces.ICameraStreamManager.FrameFormat.RGBA_8888 | RGBA_8888(ImageFormat.FLEX_RGBA_8888)
dji.v5.manager.interfaces.ICameraStreamManager.FrameFormat.YUV420_888 | YUV420_888(ImageFormat.YUV_420_888)
dji.v5.manager.interfaces.ICameraStreamManager.FrameFormat.YUV444_888 | YUV444_888(ImageFormat.YUV_444_888)
dji.v5.manager.interfaces.ICameraStreamManager.FrameFormat.YUY2 | YUY2(ImageFormat.YUY2)
dji.v5.manager.interfaces.ICameraStreamManager.MimeType | enum MimeType
dji.v5.manager.interfaces.ICameraStreamManager.MimeType.H264 | H264(MediaFormat.MIMETYPE_VIDEO_AVC)
dji.v5.manager.interfaces.ICameraStreamManager.MimeType.H265 | H265(MediaFormat.MIMETYPE_VIDEO_HEVC)
dji.v5.manager.interfaces.ICameraStreamManager.ReceiveStreamListener | interface ReceiveStreamListener
dji.v5.manager.interfaces.ICameraStreamManager.ReceiveStreamListener.onReceiveStream | void onReceiveStream( @NonNull byte[] data, int offset, int length, @NonNull StreamInfo info)
dji.v5.manager.interfaces.ICameraStreamManager.ScaleType | enum ScaleType
dji.v5.manager.interfaces.ICameraStreamManager.ScaleType.CENTER_CROP | CENTER_CROP(1)
dji.v5.manager.interfaces.ICameraStreamManager.ScaleType.CENTER_INSIDE | CENTER_INSIDE(2)
dji.v5.manager.interfaces.ICameraStreamManager.ScaleType.FIX_XY | FIX_XY(0)
dji.v5.manager.datacenter.camera.StreamInfo | class StreamInfo
dji.v5.manager.datacenter.camera.StreamInfo.getFrameRate | int getFrameRate()
dji.v5.manager.datacenter.camera.StreamInfo.getHeight | int getHeight()
dji.v5.manager.datacenter.camera.StreamInfo.getMimeType | ICameraStreamManager.MimeType getMimeType()
dji.v5.manager.datacenter.camera.StreamInfo.getPresentationTimeMs | long getPresentationTimeMs()
dji.v5.manager.datacenter.camera.StreamInfo.getWidth | int getWidth()
dji.v5.manager.datacenter.camera.StreamInfo.isKeyFrame | boolean isKeyFrame()
dji.v5.manager.interfaces.ICameraStreamManager.addAvailableCameraUpdatedListener | void addAvailableCameraUpdatedListener(@NonNull AvailableCameraUpdatedListener listener)
dji.v5.manager.interfaces.ICameraStreamManager.addFrameListener | void addFrameListener(@NonNull ComponentIndexType cameraIndex, @NonNull FrameFormat format, @NonNull CameraFrameListener listener)
dji.v5.manager.interfaces.ICameraStreamManager.addReceiveStreamListener | void addReceiveStreamListener(@NonNull ComponentIndexType cameraIndex, @NonNull ReceiveStreamListener listener)
dji.v5.manager.interfaces.ICameraStreamManager.putCameraStreamSurface | void putCameraStreamSurface(@NonNull ComponentIndexType cameraIndex, @NonNull Surface surface, int surfaceWidth, int surfaceHeight, @NonNull ScaleType scaleType)
dji.v5.manager.interfaces.ICameraStreamManager.removeAvailableCameraUpdatedListener | void removeAvailableCameraUpdatedListener(@NonNull AvailableCameraUpdatedListener listener)
dji.v5.manager.interfaces.ICameraStreamManager.removeCameraStreamSurface | void removeCameraStreamSurface(@NonNull Surface surface)
dji.v5.manager.interfaces.ICameraStreamManager.removeFrameListener | void removeFrameListener(@NonNull CameraFrameListener listener)
dji.v5.manager.interfaces.ICameraStreamManager.removeReceiveStreamListener | void removeReceiveStreamListener(@NonNull ReceiveStreamListener listener)
dji.v5.manager.interfaces.ICameraStreamManager.setKeepAliveDecoding | void setKeepAliveDecoding(boolean isKeepALive)
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseComponent | enum FlySafeDatabaseComponent
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseComponent.AIRCRAFT | AIRCRAFT(0)
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseComponent.MSDK | MSDK(1)
dji.v5.manager.aircraft.flysafe.info.FlySafeDatabaseInfo | class FlySafeDatabaseInfo
dji.v5.manager.aircraft.flysafe.info.FlySafeDatabaseInfo.getComponent | FlySafeDatabaseComponent getComponent()
dji.v5.manager.aircraft.flysafe.info.FlySafeDatabaseInfo.getDatabaseName | String getDatabaseName()
dji.v5.manager.aircraft.flysafe.info.FlySafeDatabaseInfo.getDatabaseSize | long getDatabaseSize()
dji.v5.manager.aircraft.flysafe.info.FlySafeDatabaseInfo.getDatabaseTimeStamp | long getDatabaseTimeStamp()
dji.v5.manager.aircraft.flysafe.info.FlySafeDatabaseInfo.getFlySafeDatabaseUpgradeMode | FlySafeDatabaseUpgradeMode getFlySafeDatabaseUpgradeMode()
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseListener | interface FlySafeDatabaseListener
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseListener.onFlySafeDatabaseInfoUpdate | void onFlySafeDatabaseInfoUpdate(FlySafeDatabaseInfo flySafeDatabaseInfo)
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseListener.onFlySafeDatabaseStateUpdate | void onFlySafeDatabaseStateUpdate(FlySafeDatabaseState flySafeDatabaseState)
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseState | enum FlySafeDatabaseState
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseState.NEED_TO_IMPORT | NEED_TO_IMPORT(1)
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseState.NEED_TO_SYNC | NEED_TO_SYNC(0)
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseState.UP_TO_DATE | UP_TO_DATE(2)
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseUpgradeMode | enum FlySafeDatabaseUpgradeMode
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseUpgradeMode.AUTOMATIC_UPGRADE | AUTOMATIC_UPGRADE(1)
dji.v5.manager.aircraft.flysafe.FlySafeDatabaseUpgradeMode.MANUAL_IMPORT | MANUAL_IMPORT(0)
dji.v5.manager.aircraft.flysafe.info.FlyZoneInformation.getLowerLimit | double getLowerLimit()
dji.v5.manager.aircraft.flysafe.info.FlyZoneInformation.getUpperLimit | double getUpperLimit()
dji.v5.manager.aircraft.flysafe.info.FlyZoneLicenseInfo.getRidUnlockType | RidUnlockType getRidUnlockType()
dji.v5.manager.aircraft.flysafe.info.RidUnlockType | enum RidUnlockType
dji.v5.manager.aircraft.flysafe.info.RidUnlockType.CHINA | CHINA(2)
dji.v5.manager.aircraft.flysafe.info.RidUnlockType.EUROPEAN | EUROPEAN(1)
dji.v5.manager.aircraft.flysafe.info.RidUnlockType.UNKNOWN | UNKNOWN(255)
dji.v5.manager.interfaces.IFlyZoneManager.addFlySafeDatabaseListener | void addFlySafeDatabaseListener(@NonNull FlySafeDatabaseListener listener)
dji.v5.manager.interfaces.IFlyZoneManager.clearAllFlySafeDatabaseListener | void clearAllFlySafeDatabaseListener()
dji.v5.manager.interfaces.IFlyZoneManager.importFlySafeDynamicDatabaseToMSDK | void importFlySafeDynamicDatabaseToMSDK(String databaseFilePath, @NonNull CommonCallbacks.CompletionCallbackWithProgress<Double> callback)
dji.v5.manager.interfaces.IFlyZoneManager.pushFlySafeDynamicDatabaseToAircraft | void pushFlySafeDynamicDatabaseToAircraft(@NonNull CommonCallbacks.CompletionCallbackWithProgress<Double> callback)
dji.v5.manager.interfaces.IFlyZoneManager.removeFlySafeDatabaseListener | void removeFlySafeDatabaseListener(@NonNull FlySafeDatabaseListener listener)
dji.v5.manager.interfaces.IFlyZoneManager.setFlySafeDynamicDatabaseUpgradeMode | void setFlySafeDynamicDatabaseUpgradeMode(@NonNull FlySafeDatabaseUpgradeMode flySafeDynamicDatabaseUpgradeMode , @NonNull CommonCallbacks.CompletionCallback callback)
dji.v5.common.ldm.LDMExemptModule.REAL_NAME | REAL_NAME
dji.v5.manager.interfaces.ILiveStreamManager.getCameraIndex | ComponentIndexType getCameraIndex()
dji.v5.manager.interfaces.ILiveStreamManager.setCameraIndex | void setCameraIndex(@NonNull ComponentIndexType cameraIndex)
dji.v5.manager.interfaces.IMediaDataCenter.getCameraStreamManager | ICameraStreamManager getCameraStreamManager()
dji.v5.manager.interfaces.IMediaManager.MediaFrameListener | interface MediaFrameListener
dji.v5.manager.interfaces.IMediaManager.MediaFrameListener.onError | void onError(@NonNull IDJIError error)
dji.v5.manager.interfaces.IMediaManager.MediaFrameListener.onReceiveStream | void onReceiveStream( byte[] data, int offset, int length, @NonNull StreamInfo info)
dji.v5.manager.interfaces.IMediaManager.playVideoToSurface | void playVideoToSurface(MediaFile mediaFile, Surface surface, int surfaceWidth, int surfaceHeight, ICameraStreamManager.ScaleType scaleType, MediaFrameListener listener)
dji.v5.manager.aircraft.megaphone.MegaphoneInfo | class MegaphoneInfo
dji.v5.manager.aircraft.megaphone.MegaphoneInfoListener | interface MegaphoneInfoListener
dji.v5.manager.aircraft.megaphone.MegaphoneInfoListener.onUpdateMegaphoneInfo | void onUpdateMegaphoneInfo(MegaphoneInfo megaphoneInfo)
dji.v5.manager.aircraft.megaphone.MegaphoneInfo.getPlayMode | PlayMode getPlayMode()
dji.v5.manager.aircraft.megaphone.MegaphoneInfo.getStatus | MegaphoneStatus getStatus()
dji.v5.manager.aircraft.megaphone.MegaphoneInfo.getVolume | Integer getVolume()
dji.v5.manager.aircraft.megaphone.MegaphoneInfo.getWorkMode | WorkMode getWorkMode()
dji.v5.manager.interfaces.IMegaphoneManager.addMegaphoneInfoListener | void addMegaphoneInfoListener(MegaphoneInfoListener listener)
dji.v5.manager.interfaces.IMegaphoneManager.clearAllMegaphoneInfoListener | void clearAllMegaphoneInfoListener()
dji.v5.manager.interfaces.IMegaphoneManager.removeMegaphoneInfoListener | void removeMegaphoneInfoListener(MegaphoneInfoListener listener)
dji.v5.manager.aircraft.uas.AreaStrategy.CHINA_STRATEGY | CHINA_STRATEGY(AreaCode.CHINA.value())
dji.v5.manager.aircraft.uas.AreaStrategy.EUROPEAN_STRATEGY | EUROPEAN_STRATEGY("EU")
dji.v5.manager.aircraft.uas.OperatorRegistrationNumberStatus | class OperatorRegistrationNumberStatus implements KeepProguard
dji.v5.manager.aircraft.uas.OperatorRegistrationNumberStatusListener | interface OperatorRegistrationNumberStatusListener
dji.v5.manager.aircraft.uas.OperatorRegistrationNumberStatusListener.onUpdate | void onUpdate(OperatorRegistrationNumberStatus operatorRegNumberStatus)
dji.v5.manager.aircraft.uas.OperatorRegistrationNumberStatus.isOperatorRegistrationNumberImport | boolean isOperatorRegistrationNumberImport()
dji.v5.manager.aircraft.uas.RealNameRegistrationStatus | class RealNameRegistrationStatus
dji.v5.manager.aircraft.uas.RealNameRegistrationStatusListener | interface RealNameRegistrationStatusListener
dji.v5.manager.aircraft.uas.RealNameRegistrationStatusListener.onUpdate | void onUpdate(RealNameRegistrationStatus realNameRegistrationStatus)
dji.v5.manager.aircraft.uas.RealNameRegistrationStatus.getRealNameRegistrationStateFromAircraft | RealNameRegistrationState getRealNameRegistrationStateFromAircraft()
dji.v5.manager.aircraft.uas.RemoteIdWorkingState.NOT_SUPPORTED | NOT_SUPPORTED(5)
dji.v5.manager.aircraft.uas.RemoteIdWorkingState.NO_BROADCAST | NO_BROADCAST(4)
dji.v5.manager.interfaces.IUASRemoteIDManager.addOperatorRegistrationNumberStatusListener | void addOperatorRegistrationNumberStatusListener(OperatorRegistrationNumberStatusListener listener)
dji.v5.manager.interfaces.IUASRemoteIDManager.addRealNameRegistrationStatusListener | void addRealNameRegistrationStatusListener(RealNameRegistrationStatusListener listener)
dji.v5.manager.interfaces.IUASRemoteIDManager.clearAllOperatorRegistrationNumberStatusListener | void clearAllOperatorRegistrationNumberStatusListener()
dji.v5.manager.interfaces.IUASRemoteIDManager.clearAllRealNameRegistrationStatusListener | void clearAllRealNameRegistrationStatusListener()
dji.v5.manager.interfaces.IUASRemoteIDManager.getOperatorRegistrationNumber | void getOperatorRegistrationNumber(@NonNull CommonCallbacks.CompletionCallbackWithParam<String> callback)
dji.v5.manager.interfaces.IUASRemoteIDManager.removeOperatorRegistrationNumberStatusListener | void removeOperatorRegistrationNumberStatusListener(OperatorRegistrationNumberStatusListener listener)
dji.v5.manager.interfaces.IUASRemoteIDManager.removeRealNameRegistrationStatusListener | void removeRealNameRegistrationStatusListener(RealNameRegistrationStatusListener listener)
dji.v5.manager.interfaces.IUASRemoteIDManager.setOperatorRegistrationNumber | void setOperatorRegistrationNumber(String number, @NonNull CommonCallbacks.CompletionCallback callback)
dji.v5.manager.interfaces.IUASRemoteIDManager.setUASRemoteIDAreaStrategy | IDJIError setUASRemoteIDAreaStrategy(AreaStrategy strategy)
dji.v5.manager.interfaces.IUASRemoteIDManager.updateRealNameRegistrationStateFromUOM | void updateRealNameRegistrationStateFromUOM( CommonCallbacks.CompletionCallback callback)
dji.v5.manager.aircraft.waypoint3.WaypointActionListener.onExecutionFinish | void onExecutionFinish(int actionGroup, int actionId, @Nullable IDJIError error)
dji.v5.manager.aircraft.waypoint3.WaypointActionListener.onExecutionStart | void onExecutionStart(int actionGroup , int actionId)

--android --android