Цель программы, которую я пишу, заключается в следующем:
- сделать 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
нет это помогло.