0
ダウンロードプログレスバーを表示して、私のアプリが次のアクティビティを続行する前に黒い画面を表示するのではなく、ダウンロードするバイト数を表示します。私はこのコードでそれを試みました:Firebaseダウンロードプログレスバー
task.addOnProgressListener(new OnProgressListener<FileDownloadTask.TaskSnapshot>() {
private float previouslyTransferedBytes = 0;
private boolean firstProgress = true;
@Override
@SuppressWarnings("VisibleForTests")
public void onProgress(FileDownloadTask.TaskSnapshot taskSnapshot) {
//update total bytes to download
if(firstProgress){
Intent totalBytesToDownloadIntent = new Intent(Code.TOTAL_BYTES_TO_TRANSFER);
float totalbytecount = taskSnapshot.getTotalByteCount();
totalBytesToDownloadIntent.putExtra(Code.TOTAL_BYTES_TO_TRANSFER,totalbytecount);
GlobalVars.applicationContext.sendBroadcast(totalBytesToDownloadIntent);
firstProgress = false;
}
float newlyTransfered = taskSnapshot.getBytesTransferred()-previouslyTransferedBytes;
Intent downloadProgress = new Intent(Code.DOWNLOAD_PROGRESS);
downloadProgress.putExtra(Code.BYTES_TRANSFERED,newlyTransfered);
GlobalVars.applicationContext.sendBroadcast(downloadProgress);
previouslyTransferedBytes = taskSnapshot.getBytesTransferred();
}
});
しかし、合計のバイト数は-1を返します。私は間違って何をしていますか?
EDIT:正しくダウンロードされ、後でアプリケーションで使用されるため、ファイルは間違いなく存在します。
EDIT 2: "タスク"のタイプはFileDownloadTaskです。
ダウンロードに使用している 'getXXX()'メソッド( 'getFile()'、 'getBytes()'、 'getStream()')はどちらですか? –
私はgetFile()を使用しています – Jonathan
'' Code.TOTAL_BYTES_TO_TRANSFER'という文字列をインテントアクションとして、そして余分な 'totalbytecount'を格納するためのキーとして使用しています。それはあなたが意図したものですか? –