2017-11-02 14 views
0

サイズが約200MBのzipファイルをダウンロードしようとしています。現在ダウンロードされているバイトを取得するために、私は次のコードスニペットを使用します。Androidダウンロードマネージャー、COLUMN_STATUSは7です。これはどういう意味ですか?

while ((cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_PENDING) ||(cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_RUNNING)) { 
    downloadedLength = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)); 
} 

たび(cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)あなたが、私はこれを通じて達成したいことは、私が正しく理解していた場合、それは状況SUCCESS

答えて

2

に達するまで、ダウンロードの進捗状況を取得することです私にint 7.

を返します。アプリ内で進行状況を表示したい

カーソルオブジェクトを取得したら、基本的にこれを実行して進行状況を表示できます。

Cursor c = dm.query(query); 
if (c.moveToFirst()) { 
    int totalSizeIndex = c.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES); 
    int downloadedIndex = c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR); 
    long totalSize = c.getInt(totalSizeIndex); 
    long downloaded = c.getInt(downloadedIndex); 
    double progress = 0.0; 
    if (size != -1) { 
     progress = downloaded * 100.0/totalSize; 
    } 
} 

* 100.0/totalSizeがパーセンテージを計算します。

+0

c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FARは、ダウンロードが成功するまで繰り返しますか?0〜100%のダウンロードを監視する必要があるため、c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)をwhileループ内に配置します。成功したときにステータスがPENDINGまたはRUNNINGになっていて、今までダウンロードしたバイトを取得したい場合 – Mad

+0

はい、c.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)は常に実行されますが、値は常に同じです。 –

+0

はい、それは本当ですCOLUMN_TOTAL_SIZE_BYTESは完全なダウンロードサイズを返しますが、私が知る必要があるのはCOLUMN_BYTES_DOWNLOADED_SO_FARです値を提供します。これをループ内で呼び出す必要がありますか?ダウンローを取得するにはこれまで通りのバイト値を – Mad

関連する問題