Вызов refreshFileListOfStorageLocation () в DJI Android SDK занимает много секунд для получения результата (mavic - PullRequest
0 голосов
/ 17 января 2020

Цель программы, которую я пишу, заключается в следующем:

  • сделать jpg-изображение с DJI mavi c 2 enterprise
  • загрузить изображение jpg на подключено android приложение

Код делает это. Проблема в том, что весь процесс занимает более 5, иногда до 15 секунд. Основным узким местом является функция refreshFileListOfStorageLocation () .

Настройка кода следующая:


mMediaManager = DJISampleApplication.getProductInstance().getCamera().getMediaManager();
camera = DJISampleApplication.getProductInstance().getCamera();

camera.startShootPhoto(new CommonCallbacks.CompletionCallback() {
    @Override
    public void onResult(DJIError djiError) {
        mMediaManager.refreshFileListOfStorageLocation(SettingsDefinitions.StorageLocation.INTERNAL_STORAGE, new CommonCallbacks.CompletionCallback() {
        @Override
        public void onResult(DJIError djiError) {
        newPicture();
    });
});


void newPicture() {
mediaFileList = mMediaManager.getInternalStorageFileListSnapshot();
MediaFile lastImage = mediaFileList.get(mediaFileList.size()-1);
lastImage.fetchFileData(destDir, names[0], new DownloadListener<String>() {
    @Override
    public void onSuccess(String s) {
        deleteAllFilesFromDrone();
    return;
    }
}

Как я уже сказал, это работает; проблема заключается во времени между refreshFileListOfStorageLocation () и onResult .

Есть ли способ ускорить это? Я пытался:

  • сохранить количество файлов в хранилище дронов на 1 макс,
  • сделать прослушиватель FileState через addUpdateFileListStateListener , хотя это только срабатывает один раз
  • , проверяя FileListState и обновляя только, если состояние НЕПОЛНОЕ или RESET

нет это помогло.

...