大疆无人机安卓Mobile Sdk开发(四)读取飞机的图片和视频并下载

大疆无人机安卓Mobile Sdk开发(一)简单介绍

大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息

大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointMission

大疆无人机安卓Mobile Sdk开发(四)读取飞机的图片和视频并下载

大疆无人机安卓Mobile Sdk开发(五)解决M300Rtk H20相机无法获取图片视频的问题

qq 505057618 接mobilesdk开发,有需求可以联系

二话不说,直接上代码

首先要获取到mediaManager ,并且需要判断isMediaDownloadModeSupported是否为true,只有为true才能将camera设置成MEDIA_DOWNLOAD 模式,这样才能获取到媒体库文件。

if (camera != null) {
            mediaManager = camera.getMediaManager();
            boolean downloadSupported = camera.isMediaDownloadModeSupported();
            if (mediaManager != null && downloadSupported) {
                camera.getStorageLocation(new CommonCallbacks.CompletionCallbackWith<SettingsDefinitions.StorageLocation>() {
                    @Override
                    public void onSuccess(SettingsDefinitions.StorageLocation storageLocation) {
                        mediaType = storageLocation;
                    }

                    @Override
                    public void onFailure(DJIError djiError) {

                    }
                });

                camera.setMode(SettingsDefinitions.CameraMode.MEDIA_DOWNLOAD, djiError -> {
                    if (djiError == null) {
                        handler.sendMessage(handler.obtainMessage(SHOW_PROGRESS_DIALOG, null));
                        handler.postDelayed(refreshListRunnable, 500);
                    }
                });
            }
        }

下面先判断当前的存储模式是什么,一种是sd卡,一种是飞机内部存储,然后调用对应的方法就可以拿到数据了。

 private Runnable refreshListRunnable = new Runnable() {
        @Override
        public void run() {
            mediaManager.refreshFileListOfStorageLocation(mediaType, djiError -> {
                if (djiError == null) {
                    if (mediaType == SettingsDefinitions.StorageLocation.SDCARD) {
                        mediaFiles = mediaManager.getSDCardFileListSnapshot();
                    } else if (mediaType == SettingsDefinitions.StorageLocation.INTERNAL_STORAGE) {
                        mediaFiles = mediaManager.getInternalStorageFileListSnapshot();
                    }
           
                    for (int i = mediaFiles.size() - 1; i >= 0; i--) {
                        final MediaFile media = mediaFiles.get(i);
                        MediaBean mediaBean = new MediaBean();
                        String fileName = media.getFileName();
                        int mediaType = media.getMediaType().value();
                        float durationInSeconds = media.getDurationInSeconds();
                        String dateCreated = media.getDateCreated();
                        mediaBean.setMedia(media);
                        mediaBean.setFileName(fileName);
                        mediaBean.setDateCreated(dateCreated);
                        mediaBean.setDurationInSeconds(durationInSeconds);
                        mediaBean.setMediaType(mediaType);
                        mediaList.add(mediaBean);
                    }
                } else {
                    handler.sendMessage(handler.obtainMessage(HIDE_PROGRESS_DIALOG, null));
                }
            });
        }
    };

然后就可以对单独的mediafile进行下载操作了

 currentMedia.fetchFileData(new File(path),
                        fileName, new DownloadListener<String>() {
                            @Override
                            public void onStart() {
                            }

                            @Override
                            public void onRateUpdate(long l, long l1, long l2) {
                            }

                            @Override
                            public void onRealtimeDataUpdate(byte[] bytes, long l, boolean b) {

                            }

                            @Override
                            public void onProgress(long total, long current) {
                                onProgressUpdateListener.onProgressUpdate(total, current, fileName, currentPosition);
                            }

                            @Override
                            public void onSuccess(String s) {
                                onProgressUpdateListener.onSuccess(fileName);
                           
                            }

                            @Override
                            public void onFailure(final DJIError djiError) {
                              
                            }
                        });
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值