请选择 进入手机版 | 继续访问电脑版
正在上传图片(0/1)

Inspire 下载照片,执行获取列表函数 fetchMediaList 错误

 0
手机看帖 24 6020
inspire 机器 想通过 DJIDrone.getDjiCamera().fetchMediaList(new DJIMediaFetchCallBack() 来获取照片列表,然后下载照片,但执行fetchMediaList后发现 DJIMediaFetchCallBack 的onResult 函数中errorCode竟然是 224,对应枚举类型为 ERR_CAM_UNSUPPORT_CMD…………
难道不支持么?? 求版主给解释…… 还有哪位大神知道 求解
评论
上传
你需要登录之后才能回帖    登录 | 注册
lanyusea  Inspire 1认证用户 2015-7-23 2#
camera mode 要切成 usb mode
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
lanyusea  Inspire 1认证用户 2015-7-23 3#
啊… 看了一眼demo APP现在叫Camera_Download_Mode了,之前调phantom2的时候是usb mode

anyway我没具体用过也不确定,你两个都试试吧。
反正fetch media之前一定要切mode的,相机不能又拍照的同时又允许你读取照片,所以要从capture mode里面切出来。
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
楼主   2015-7-23 4#
lanyusea 发表于 2015-7-23 11:35
啊… 看了一眼demo APP现在叫Camera_Download_Mode了,之前调phantom2的时候是usb mode

anyway我没具体用 ...
多谢提醒…… 我去试试
楼主   2015-7-23 5#
lanyusea 发表于 2015-7-23 11:35
啊… 看了一眼demo APP现在叫Camera_Download_Mode了,之前调phantom2的时候是usb mode

anyway我没具体用 ...
两种类型都试过了,好像还是不行,之前精灵2的时候这种方式还可以……我是在室内测试的,难道非得到室外么?
mythou   2015-7-23 6#
inspire 1 下载方式不一样,是直接Camera操作。具体看sdk demo 里面 Camera例子有下载代码
楼主   2015-7-23 7#
mythou 发表于 2015-7-23 13:50
inspire 1 下载方式不一样,是直接Camera操作。具体看sdk demo 里面 Camera例子有下载代码 ...
你测试成功过么?  
fetchMediaList  就是 Camera 的成员函数啊 而且 我看到DJIInspireCamera 类有对 该函数进行重写, 但是通过 DJIDrone.getDjiCamera()获取camera对象直接调用貌似不行,就是按照demo里面的来得

lanyusea  Inspire 1认证用户 2015-7-23 8#
believe0925 发表于 2015-7-23 14:16
你测试成功过么?  
fetchMediaList  就是 Camera 的成员函数啊 而且 我看到DJIInspireCamera 类有对 该 ...
Camera_PlayBack_Mode
这个应该对了,之前两个没看清,是download不是display,抱歉。
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
楼主   2015-7-23 9#
lanyusea 发表于 2015-7-23 14:28
Camera_PlayBack_Mode
这个应该对了,之前两个没看清,是download不是display,抱歉。
...
你测试成功了没? 为什么我这获取照片列表 还是提示 unsupport CMD,
setCameraMode设置类型为Camera_PlayBack_Mode , 返回成功了,并且 视频停止,不再传输




lanyusea  Inspire 1认证用户 2015-7-23 10#
believe0925 发表于 2015-7-23 17:34
你测试成功了没? 为什么我这获取照片列表 还是提示 unsupport CMD,
setCameraMode设置类型为Camera_Pla ...
我测试成功了。

这个是playmode:切过去之后可以看到之前拍过的照片。
1.jpg
在playmode里面有下载的选项。


Download mode 也return0,正常进去了,但是没在 demo project 里面找到download button…………
2.jpg



画面停止传输是正常现象,因为 camera mode 变了。



然后我发现一个奇怪的事情是:
fetchMediaList 这个函数存在的demo activity在inspire1/phantom3下面并没有,只出现在了phantom2机型下的demo activity中。
所以我怀疑这个功能是只支持phantom2的。在Inspire 1/phantom3中只能使用 playmode 下的selectAllFiles+downloadAllSelectedFiles完成下载……

SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
楼主   2015-7-24 11#
lanyusea 发表于 2015-7-23 18:23
我测试成功了。

这个是playmode:切过去之后可以看到之前拍过的照片。
inspire的demo 没有这个页面
我看了代码 里面有条件判断,
if(DJIDroneType.DJIDrone_Vision == DJIDrone.getDroneType()){
            m_camera_set_workmode_btn.setVisibility(View.GONE);            
            mFunctionLayout.setVisibility(View.GONE);            
            mCameraPlaybackStateScrollView.setVisibility(View.GONE);
//            m_camera_multi_edit_exit_btn.setVisibility(View.GONE);
//            m_camera_multi_edit_select_file_btn.setVisibility(View.GONE);
//            m_camera_multi_edit_unselect_file_btn.setVisibility(View.GONE);
//            m_camera_multi_edit_select_allfile_btn.setVisibility(View.GONE);
//            m_camera_multi_edit_unselect_allfile_btn.setVisibility(View.GONE);
//            m_camera_multi_edit_select_page_btn.setVisibility(View.GONE);
//            m_camera_multi_edit_unselect_page_btn.setVisibility(View.GONE);
//            m_camera_multi_edit_delete_all_select_btn.setVisibility(View.GONE);
//            m_camera_multi_edit_download_all_select_btn.setVisibility(View.GONE);
}
        else{
            mFunctionLayout.setVisibility(View.INVISIBLE);
            mCameraPlaybackStateScrollView.setVisibility(View.INVISIBLE);
        }mFunctionLayout 就是下面 select file ,unselect file 这些BT的layout照这么看如果是inspire 逻辑肯定走的是else ,也就是不显示, 大疆这什么意思? inspire 不支持么? demo里直接屏蔽 艹 真让人难懂啊, 可恨的是 DJIInspireCamera 还重写了fetchMediaList(DJIMediaFetchCallBack mCall)这个函数,但是这个函数调用后返回 unsupport ,真让人抓狂!!理论上说inspire应该是可以的,因为他的官方手机APP就可以浏览照片,我最后再试试downloadallselectedFiles  再不行 我就发邮件 投诉了
lanyusea  Inspire 1认证用户 2015-7-24 12#
believe0925 发表于 2015-7-24 14:24
inspire的demo 没有这个页面
我看了代码 里面有条件判断,
if(DJIDroneType.DJIDrone_Vision == DJIDrone ...
你把workmode设置成 playback mode 之后那个页面就出来了。

下面onclick listener中的workmode选择里面也有设定visiable/invisiable的选项,不只是上面这个dronetype一下子拍死的。


官方APP用的是private API,不具参考性,还是给回来看demo才算数 -。-
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
楼主   2015-7-27 13#
lanyusea 发表于 2015-7-24 14:33
你把workmode设置成 playback mode 之后那个页面就出来了。

下面onclick listener中的workmode选择里面 ...
谢谢你耐心的帮助…… 你精灵下载成功了没? 我的inspire还是没有下载成功…………
DownLoadAllSelectedFiles 这个函数 你测试过没? demo里面是这么写的  DJIDrone.getDjiCamera().downloadAllSelectedFiles("Dji Sdk",new DJIFileDownloadCallBack() 设置playback mode 之后 的页面,先选择下面的selectAllFile 按钮,然后再选择 DownloadAll 按钮,直接提示 OnEnd, 跟我自己写的测试代码一样? 并没有收到 OnStart 以及下载进度OnProgressUpdate 以及其他消息,文件当然就没没有下载下来!

lanyusea  Inspire 1认证用户 2015-7-27 14#
believe0925 发表于 2015-7-27 13:16
谢谢你耐心的帮助…… 你精灵下载成功了没? 我的inspire还是没有下载成功…………
DownLoadAllSelectedF ...
我是Inspire1,下载成功了
1.jpg
(这个是之后截的,所以disconnect)
2.jpg


你是不是没有进multi edit直接选择的select all?那样应该不工作的。

我的操作如下: set workmode 为 playback -> 出现sd卡中的照片,只显示最新一张 -> multiple view -> 可以看到所有的照片 -> multiple edit -> 照片右下角出现框框提示可以勾选 -> select all -> 所有照片被选择上 -> download -> 出现下载的进度条 -> 下载成功后照片右上角出现一个已下载的标识 并且可以在手机的 dji sdk 文件夹里面看到下载回来的照片

但我只有一页照片,不是很清楚这个select all是选中这一页的所有还是全部的所有。
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
evan2048_3  Inspire 1 RAW认证用户 2015-7-27 15#
Inspire1 Android-DJI-SDK V2.1.0我是这样下载的:
setCameraPlaybackMode->enterMultiplePreviewMode->enterMultipleEditMode->selectAllFilesInPage(根据具体情况)->downloadAllSelectedFiles->finishDownloadAllSelectedFiles
evan2048_3  Inspire 1 RAW认证用户 2015-7-27 16#
发现楼上写的很详细了。。。过程繁琐,一步一步来还是没问题的
楼主   2015-7-30 17#
evan2048_3 发表于 2015-7-27 18:45
Inspire1 Android-DJI-SDK V2.1.0我是这样下载的:
setCameraPlaybackMode->enterMultiplePreviewMode->ent ...
我在demo里面这么操作可以……
可是我的需求是 任务执行结束后自动下载照片,说白了也就是 一个按钮 执行这一系列操作,
我的 执行步骤是这样的 enterMultiplePreviewMode —>enterMultipleEditMode ->selectAllFiles->downloadAllSelectedFiles ,
每个步骤的执行都是在上一个步骤 返回正确是条件调用的,也就是在 onResult函数里面执行的。


可问题是 我调用 downloadAllSelectedFiles  之后还是直接给我返回的 OnEnd 并没有下载照片,很郁闷………… 你具体是怎么操作的??


最后一步 FinisheDownload 应该是在下载之后调用的把,跟我这问题有没有关系?
楼主   2015-7-30 18#
lanyusea 发表于 2015-7-27 13:40
我是Inspire1,下载成功了

(这个是之后截的,所以disconnect)
辛苦你啦……demo 操作是可以,可是我想通过一键来响应着 一系列操作

我的 执行步骤是这样的 enterMultiplePreviewMode —>enterMultipleEditMode ->selectAllFiles->downloadAllSelectedFiles ,
每个步骤的执行都是在上一个步骤 返回正确是条件调用的,也就是在 onResult函数里面执行的。

可问题是 我调用 downloadAllSelectedFiles  之后还是直接给我返回的 OnEnd 并没有下载照片



我试了DJIInspireDownloader 这个类,好用是挺好用  比较坑的是 它只下载 最新的一张照片或者视频……
lanyusea  Inspire 1认证用户 2015-7-30 19#
believe0925 发表于 2015-7-30 10:24
辛苦你啦……demo 操作是可以,可是我想通过一键来响应着 一系列操作

我的 执行步骤是这样的 enterMulti ...
我下午试着写一下这个功能,晚些回复你
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
lanyusea  Inspire 1认证用户 2015-7-30 20#
believe0925 发表于 2015-7-30 10:18
我在demo里面这么操作可以……
可是我的需求是 任务执行结束后自动下载照片,说白了也就是 一个按钮 执行 ...
算是搞定了。

你给我半个小时让我静静我再回复你… 这个bug真是太恶心了…
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
lanyusea  Inspire 1认证用户 2015-7-30 21#
believe0925 发表于 2015-7-30 10:24
辛苦你啦……demo 操作是可以,可是我想通过一键来响应着 一系列操作

我的 执行步骤是这样的 enterMulti ...
SDK 的 bug,onresult返回东西的时候其实并没有执行完。

我第一次尝试的时候跟你一样,每一个onResult都会直接call下一个。
结果发现最后直接onEnd。

然后用demo程序中的view debug发现这么做根本一个照片都选不上,下载列表是空的,所以onEnd。

我不确定问题是在第二条命令冲掉了第一条命令,
还是第一条命令有硬件反应时间,但onresult忽略了这个时间,所以第二个命令send出去之后其实上一条还没有执行完。

因为两种现象都有

1. 手动进入multipe select之后 一个button做 select all 和 download select 两件事但发现一个照片都没选上…
2. 进playback mode和multiple view写在一个button里面但发现只是进了playback mode,但并没有multiple。

但肯定是他们这里用了udp… 所以返回success只是命令send出去了,没说运行成功还是失败。


所以不知道该怎么debug……只能很dirty的找hardcore解决方案。


然后发现需要加delay,但单纯的sleep不工作,给多大都不工作…


所以两个解决方案是:
1. 一个button控制一个function,一共五个搞定
2. 用Handler。
我直接贴代码了…
https://gist.github.com/lanyusea/bd98578a65f2d1e72562 (没写全,剩下的跟demo中下载的一样,省地方就不贴了。

但是!
我之所以说解决了一半是因为我把demo project搞定了,可我自己的不行。
该加的callback都加了,该做的oncreate都做了,可最后的结果只是停在了play back single view,没办法下载。
唯一的区别就是我没有camera view(我的APP不看摄像头画面)。
但我不认为这个有影响,可我确实是找不到其他与demo APP不同的地方了…

心好累………
等我过两天再继续debug…
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
楼主   2015-7-31 22#
lanyusea 发表于 2015-7-30 17:21
SDK 的 bug,onresult返回东西的时候其实并没有执行完。

我第一次尝试的时候跟你一样,每一个onResult都 ...
辛苦啦…… 我因为这个问题 也焦头烂耳好久了, 我也觉得是他们 回调消息跟实际执行不同步 造成的下载失败问题……改天给大疆提个需求,在InspiresDownloader 类里面添加下载所有照片 功能 问题不就解决了……
pangjie   2015-8-23 23#
还有后续不,可否能够通过DJIMediaFile的index,指定下载的selectFileAtIndex,下载指定的照片。
最好情况就是如何能给下载列表添加数据,一次性下载需要的照片
pangjie   2015-8-23 24#
敢问兄台,你这个InspiresDownloader 是如何下载的。         onEventBackgroundThread要调用吗,调用的话是如何赋值的。。谢鸟
rome753   2015-9-6 25#
按照上面的步骤, 下载是没问题了.
请问如何选择要下载的照片的页数和序号, 比如我要下载刚刚拍的三张照片, 应该如何做呢?
还有, 在地面站任务运行的时候能够下载吗?
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表