Ich möchte einen Download-Fortschrittsbalken anzeigen, um dem Benutzer anzuzeigen, wie viele Bytes noch heruntergeladen werden müssen, bevor meine App mit der nächsten Aktivität fortfährt (anstatt nur einen schwarzen Bildschirm anzuzeigen). Ich habe es mit diesem Code versucht:Firebase-Download-Fortschrittsbalken
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();
}
});
aber Gesamt bytecount gibt nur -1 zurück. Was mache ich falsch?
BEARBEITEN: Die Datei existiert definitiv, da sie korrekt heruntergeladen und später in der App verwendet wird.
EDIT 2: "Task" ist vom Typ FileDownloadTask.
Welche Methode 'getXXX()' ('getFile()', 'getBytes()', 'getStream()') verwenden Sie, um den Download durchzuführen? –
Ich benutze getFile() – Jonathan
Sie verwenden den String 'Code.TOTAL_BYTES_TO_TRANSFER' sowohl als Absichtsaktion als auch als Schlüssel zum Speichern von' totalbytecount'. Hast du das beabsichtigt? –