Firebaseでのファイルのアップロードに進行状況バーを追加しようとしました。ただし、残念ながらアップロードの進行状況を示すものではありません。 logcatと進行状況バーの両方が、ファイルが100%に達したときにのみ示す
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = 100.0 * (taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
System.out.println("Upload is " + progress + "% done");
int currentprogress = (int) progress;
progressBar.setProgress(currentprogress);
}
}).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
@Override
public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
System.out.println("Upload is paused");
}
});
progress
の計算で用語のグループ化を変更して、変換を強制的に浮動にします。あなたのコードが今あるので、あなたは2つのlongを分けています。除算の結果はgetBytesTransferred() == getTotalByteCount()
まで0になり、その後1になります。
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
ストレージにデータを送信しているときに、アップロードしているものの進行状況を観察できます。
let uploadTask = profileRef.putData(data, metadata: metadata) { (metadata, error) in
if let error = error {
// Awesome error handling
}
}
データの送信を開始したので、変更を確認します。返されるスナップショットには、fractionCompletedというプロパティがあります。最小値と最大値が0と1のプログレスバーを設定し、その値を完了した割合の値に設定できます。または、アップロードが戻ってきたときの割合を表示することもできます。
task.observe(.progress, handler: { (snap) in
print("Our upload progress is: \(String(describing: snap.progress?.fractionCompleted))")
})