2016-08-09 4 views
0

현재 모든 이미지를 Inspire 1에서 다운로드하는 Android 애플리케이션을 작성 중입니다. 최신 버전의 SDK (v3.2.1)를 사용하고 있습니다. 이 작업을 수행하려면 DJIPlaybackManager를 사용하고 있습니다. 그러나 모든 이미지를 다운로드 할 때 문제가 발생합니다.Android SDK를 사용하여 DJI Inspire 1에서 미디어를 다운로드하는 데 문제가 발생했습니다.

아래 코드를 실행할 때마다 SD 카드에있는 모든 파일을 선택한다고해도 "No files selected"가 표시됩니다. 이 오류는 CameraFileDownloadCallback의 onError 메서드에서 발생합니다. selectAllFiles()에서 반환 된 오류는 null이므로 올바로 선택되었음을 의미한다고 생각합니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까? 나는 많은 것을 시도했지만 아무 것도 효과가없는 것 같습니다.

도움을 주시면 감사하겠습니다.

private static String TAG = "MediaManager"; 

public static void downloadAllMedia(final Context mContext) { 
    Log.d(TAG, "Downloading media..."); 
    final String fileDirPath = mContext.getFilesDir().getPath(); 
    DJIBaseProduct product = DJIDemoApplication.getProductInstance(); 
    if (product != null && product.isConnected()) { 
     if (product instanceof DJIAircraft) { 
      final DJICamera camera = product.getCamera(); 
      if (camera != null) { 
       camera.setCameraMode(DJICameraSettingsDef.CameraMode.Playback, new DJIBaseComponent.DJICompletionCallback() { 
        @Override 
        public void onResult(DJIError djiError) { 
         if (djiError == null) { 
          final DJIPlaybackManager playbackManager = camera.getPlayback(); 
          DJICameraError enterPreviewModeError = playbackManager.enterMultiplePreviewMode(); 
          if(enterPreviewModeError != null) { 
           Log.e(TAG, "Failed to enter mutliple preview mode"); 
          } 
          DJICameraError enterEditModeError = playbackManager.enterMultipleEditMode(); 
          if(enterEditModeError != null) { 
           Log.e(TAG, "Failed to enter multiple edit mode: " + enterEditModeError.getDescription()); 
           return; 
          } 
          DJIError selectFilesError = playbackManager.selectAllFiles(); 
          if (selectFilesError != null) { 
           Log.e(TAG, "Failed to select files on device: " + selectFilesError.getDescription()); 
           return; 
          } else { 
           Log.d(TAG, "Successfully selected all media"); 
          } 
          playbackManager.downloadSelectedFiles(new File(fileDirPath), new DJIPlaybackManager.CameraFileDownloadCallback() { 
           @Override 
           public void onStart() { 
            Log.d(TAG, "Starting fetch of media"); 
           } 

           @Override 
           public void onEnd() { 
            Log.d(TAG, "Finished downloading media"); 
           } 

           @Override 
           public void onError(Exception e) { 
            Log.e(TAG, "Failed downloading media: " + e.getMessage()); 
           } 

           @Override 
           public void onProgressUpdate(int i) { 
            Log.d(TAG, "Media download from drone: " + i + "%"); 
           } 
          }); 
         } else { 
          Log.e(TAG, "Could not set the Camera mode to playback"); 
         } 
        } 
       }); 
      } else { 
       Log.e(TAG, "Camera is not available"); 
      } 
     } 
    } 
} 

답변

0

여기 DJI 샘플 코드에서 동일한 코드에 대해 link입니다. 다운로드하고 실행 한 후에는 가운데 버튼 1st Photo 모든 사진을 선택하고 Download를 눌러이 코드를 눌러 실행하면, 당신은

mPlaybackManager.selectAllFiles();

에 줄 번호 (112)를 수정할 수 있습니다.

DJI 제품으로 작업 한 것으로 확인되었습니다.

+0

나는 그 예제를 보았지만 유감스럽게도 이전 버전의 SDK를위한 것이기 때문에 꽤 다른 방식으로 구조화되어있다. select 메소드는 콜백과 일회성 문장처럼 보인다. DJI가 SDK에서 약간 변경된 것 같습니다. – rohan32

+0

내가 보낸 링크는 3.2.1 버전입니다. 내가 아는 바로는 이것이 최신 공개입니다. 어느 쪽을보고 있니? – Ichaival