2013-11-20 138 views
1

我的應用程序看起來像Dropbox sync sdk的Dropbox Notes示例,除了我想在將新文件上傳到Dropbox時在listview中顯示進度條。
示例偵聽文本文件更改爲更新文件,但在我的情況下,我上傳了許多文件類型(文本和二進制文件)。這是我嘗試上傳文件:android dropbox sync api上傳文件並顯示進度條

DbxPath path = new DbxPath("/test.pdf"); 
DbxAccount acct = NotesAppConfig.getAccountManager(getActivity()).getLinkedAccount(); 
DbxFile mFile; 
DbxFileSystem fs = DbxFileSystem.forAccount(acct); 
try { 
    mFile = fs.open(path); 
} catch (DbxException.NotFound e) { 
    mFile = fs.create(path); 
    } 
    mFile.addListener(mChangeListener); 
    FileOutputStream out = mFile.getWriteStream(); 
    File sdcard = new File(Environment.getExternalStorageDirectory(), "test.pdf"); 
    FileInputStream in = new FileInputStream(sdcard); 
    copyFile(in, out); 
    out.close(); 
    in.close(); 

private final DbxFile.Listener mChangeListener = new DbxFile.Listener() { 

    @Override 
    public void onFileChange(DbxFile file) { 

     try { 
      if(file.getSyncStatus().pending == PendingOperation.UPLOAD){ 
       long byteTotal = file.getSyncStatus().bytesTotal; 
       long byteTransfer = file.getSyncStatus().bytesTransferred; 
       Log.d(TAG, "file changed: " + byteTransfer + "/" + byteTotal); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}; 

public static void copyFile(InputStream in, OutputStream out) throws IOException { 
    byte[] buffer = new byte[1024]; 
    int read; 
    while ((read = in.read(buffer)) != -1) { 
     out.write(buffer, 0, read); 
    } 
} 

裝載用這種方法來獲得文件列表:

List<DbxFileInfo> entries = dbxFileSystem.listFolder(dbxPath); 

這上面的代碼可以工作,但只有當上傳完成顯示文件列表視圖中。由於該示例使用DbxFileInfo,因此我不知道如何在上傳時獲取此文件的狀態。
有沒有辦法做到這一點?

+0

你解決了這個問題嗎? –

+0

不幸的是,沒有。我放棄了,轉而使用'core api',這個易於使用和控制我想要的東西。我也把這個問題發佈到dropbox論壇上,但是沒有人回答我:https://forums.dropbox.com/topic.php?id=108295 – R4j

回答

0

您可以使用不同的標誌將正在上傳的文件,如上傳的狀態,上傳uploadFinish布爾變量下

+0

你不明白這一點。我想在上傳時獲取文件的進度 – R4j

0

只要你保存文件,我相信你應該listFolder看到它。你是說那不是你看到的?

在顯示上傳進度方面,請記住,Sync API旨在與緩存脫機工作。如果您沒有連接到互聯網,那麼顯示進度條可能沒有意義......在文件上傳前可能需要數小時(或數天)。

+0

對不起,該文件可以添加到列表中,並且可以在後臺上傳。問題是它不通知偵聽器進程更新。因此,我的進度欄無法正確顯示進度。首先,進度條顯示0%,等待文件上傳完成,然後設置100%,沒有任何中間進度值。 – R4j

+0

我不認爲你想要的是Sync API的真正可能。 – smarx

+0

你確定嗎?所以聽衆是用來做什麼的? – R4j