大疆无人机安卓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) {
                              
                            }
                        });
Vivado2023是一款集成开发环境软件,用于设计和验证FPGA(现场可编程门阵列)和可编程逻辑器件。对于使用Vivado2023的用户来说,license是必不可少的。 Vivado2023的license是一种许可证,用于授权用户合法使用该软件。许可证分为多种类型,包括评估许可证、开发许可证和节点许可证等。每种许可证都有不同的使用条件和功能。 评估许可证是免费提供的,让用户可以在一段时间内试用Vivado2023的全部功能。用户可以使用这个许可证来了解软件的性能和特点,对于初学者和小规模项目来说是一个很好的选择。但是,使用评估许可证的用户在使用期限过后需要购买正式的许可证才能继续使用软件。 开发许可证是付费的,可以永久使用Vivado2023的全部功能。这种许可证适用于需要长期使用Vivado2023进行开发的用户,通常是专业的FPGA设计师或工程师。购买开发许可证可以享受Vivado2023的技术支持和更新服务,确保软件始终保持最新的版本和功能。 节点许可证是用于多设备或分布式设计的许可证,可以在多个计算机上安装Vivado2023,并共享使用。节点许可证适用于大规模项目或需要多个处理节点进行设计的用户,可以提高工作效率和资源利用率。 总之,Vivado2023 license是用户在使用Vivado2023时必须考虑的问题。用户可以根据自己的需求选择合适的许可证类型,以便获取最佳的软件使用体验。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值