2013-11-01 2 views
1

사진을 찍어 저장하고 그림을 업로드하도록 설정했습니다. 내 문제는 MediaScannerConnection이 그림을 업로드하기 전에 완료되지 않는다는 것입니다. 다른 종류의 신고서가 필요합니까? 나는 그것을 어떻게 기다릴 수 있습니까?새 사진을 업로드하기 전에 MediaScannerConnection이 완료되지 않았습니다.

전체 코드가 포함되도록 수정되었습니다.

+0

if (스캔 한) 즉시 사진을 업로드하려고합니다. 내가 이것을 추가 한 후에 거기에 걸려 있고 업로드를 전혀 시도하지 않는다. – JeffK

답변

2

대답은 실행 가능한에서 비동기 작업을 넣어이었다 제거 :

하지만, 이것을 시도. 메인 UI 스레드 외부에서 비동기 작업을로드하려고 시도 할 수 없음을 알았습니다. 또한 아래 코드는 스캔이 완료 될 때까지 기다립니다.

private File scanMedia() { 
    // TODO Auto-generated method stub 
    MediaScannerConnection.scanFile(MainScreen.this, 
      new String[] { photo.toString() }, null, 
      new MediaScannerConnection.OnScanCompletedListener() { 
       public void onScanCompleted(String path, Uri uri) { 
        Log.i("ExternalStorage", "Scanned " + path + ":"); 
        Log.i("ExternalStorage", "-> uri=" + uri); 
        fullPath = path; 
        scanned = true; 
        if(scanned){ 
         new Thread() 
         { 
          public void run() 
          { 
           MainScreen.this.runOnUiThread(new Runnable() 
           { 
            public void run() 
            { 
             new PostPicture().execute(); 
            } 
           }); 
          } 
         }.start(); 
         } else { 
       Log.e("Should scan","Didn't finish scanning"); 
       } 
           } 


          }); 
        return path; 
       } 
0

코드에서 잘 이해하지 못했지만 나머지는 추가해야한다고 생각합니다.

private File scanMedia() { 
    // TODO Auto-generated method stub 
    MediaScannerConnection.scanFile(MainScreen.this, 
      new String[] { photo.toString() }, null, 
      new MediaScannerConnection.OnScanCompletedListener() { 
       public void onScanCompleted(String path, Uri uri) { 
        Log.i("ExternalStorage", "Scanned " + path + ":"); 
        Log.i("ExternalStorage", "-> uri=" + uri); 
        scanned = true; 
     if(scanned){ 
     new PostPicture().execute(); 
     } else { 
Log.e("Should scan","Didn't finish scanning") 
} 
       } 
      }); 
    return path; 
} 

을하고

if(scanned){ 
    new PostPicture().execute(); 
+0

도움을 주셔서 감사합니다. 이 오류가 발생했습니다. 잡히지 않은 원격 예외! (예외는 아직 프로세스에서 지원되지 않습니다.) 다른 스레드에서 비동기 작업을 호출하는 것으로 추측하고 있습니까 ??? – JeffK

관련 문제