1. 任务
任务分两种,一种上传到飞机,无线断开可以继续执行,一种由设备实时控制,可以有更复杂的行为。最常见是航点任务,需要上传经纬度及海拔
几个大类
ISDKManager:管理sdk的实例化注册
registerApp() msdk注册
init(Context context, @NonNull SDKManagerCallback callback) msdk初始化
sdkmanagercallback(DJISDKInitEvent event, int totalProcess) 执行结果回调
oninitProcess() 初始化进度回调
onregistersuccess() 注册成功回调
onregisterfailure(IDJIError error) 注册失败回调
onproductdisconnect(int productId) 设备断联回调 productId 是断联的设备id
onproductconnect(int productId) 设备连接回调
IWPMZManager: 航线管理
KmzInfo getKmzInfo(String kmzpath) 加载航线文件
void generateKMZFile(String kmzpath, WaylineMission waymission,
WaylineMissionConfig config, Template template) 生成航线文件
void generateKMZFile 同上,但没有template参数,不与dji polit兼容
waylineCheckErrorMsg checkValidation(String kmzPath)检查航线文件有无错误
IWaypointMissionManager: 航线任务的上传,执行,暂停,恢复以及航线任务执行状态的监听等功能
见文档
IMediaDataCenter: 此类是多媒体数据中心管理类,用于获取VideoStreamManager,MediaManager和LiveStreamManager实例,提供了码流管理,多媒体文件管理和直播管理等功能。
推流:
-
1. 调用
[getAvailableStreamSources](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IVideoStreamManager.html#ivideostreammanager_getavailablestreamsources)
获取可用的码流源。 -
2. 调用
[getAvailableVideoChannels](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IVideoStreamManager.html#ivideostreammanager_getavailablevideochannels)
获取可用的码流通道。 -
3. 调用
[getAvailableVideoChannels](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IVideoStreamManager.html#ivideostreammanager_getavailablevideochannels)
中的[startChannel](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IVideoStreamManager_IVideoChannel.html#ivideostreammanager_ivideochannel_startchannel)
设置步骤1获取到的[StreamSource](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IVideoStreamManager_StreamSource.html#ivideostreammanager_streamsource)
把码流源和码流通道进行绑定,并且开启当前码流通道。 -
4. 如果你希望自己实现解码功能,你通过添加调用
[addStreamDataListener](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IVideoStreamManager_IVideoChannel.html#ivideostreammanager_ivideochannel_addstreamdatalistener)
添加码流数据监听器来接收码流数据。 -
5. 如果你不希望自己实现解码功能,你也可以使用DJI提供的解码器
[IVideoDecoder](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IVideoStreamManager_IVideoDecoder.html#ivideostreammanager_ivideodecoder)
来进行解码。
addStreamDataListener会onReceive到IVideoFrame 数据类,获取其中的byte[]用于推流直播。同时可设置码流状态监听器addVideoChannelStateChangeListener 以获取推流状态。
如果想用dji的解码功能,使用IVedioDecoder类,VideoDecoder(Context context, VideoChannelType channelType, DecoderOutputMode outputMode, Object outputSurface, int width, int height, boolean isForLiveStream)
Context
context
应用的Context实例。
channelType
码流通道类型。
outputMode
输出模式。
Object
outputSurface
输出Surface实例,可以使用SurfaceView或者SurfaceHolder。
int
width
解码器的宽。
int
height
解码器的高。
boolean
isForLiveStream
true
表示该解码器用于直播解码。
解码器有 onresume,onpause,ondestory方法,可恢复、暂停、销毁实例。
文件下载:
void setMediaFileDataSource(MediaFileListDataSource source)
设置需要获取的多媒体文件数据源。你可以选择拉取不同存储位置和不同负载中的多媒体文件。(一般是相机和sd卡)
pullMediaFileListFromCamera
从相机中拉取多媒体文件列表。当多媒体文件列表状态[MediaFileListState](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IMediaManager.html#imediamanager_mediafileliststate)
为[IDLE](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IMediaManager.html#imediamanager_mediafileliststate_idle)
时,需要调用此方法从相机中拉取全量数据。当有新媒体文件产生的时候,MSDK会自动从相机拉取最新的多媒体文件列表。当多媒体文件列表状态[MediaFileListState](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IMediaManager.html#imediamanager_mediafileliststate)
变为[UP_TO_DATE](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IMediaManager.html#imediamanager_mediafileliststate_up_to_date)
时,表示拉取多媒体文件列表已完成,请调用[getMediaFileListData](https://developer.dji.com/cn/api-reference-v5/android-api/Components/IMediaDataCenter/IMediaManager.html#imediamanager_getmediafilelistdata)
获取多媒体文件列表数据。