2016-07-09 5 views
3

firebaseにファイルをアップロードするためのプログレスバーを追加しようとしました。アップロードの進行状況を示すものではありません。ファイルが100%アップデートの進捗バーとFirebaseのアップロード

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"); 
      } 
     }); 
+2

プログレスバーは256KB単位で起動します。したがって、ファイルが256KBより小さい場合は、1回の更新で0%から100%にジャンプします。 –

+1

私は2MBのようなファイルを試しました、4MBのログcatのアップデートは "5%か6回のように" 0%完了しました。数字は無罪でもプログレスバーの更新でもありません –

+0

@FrankvanPuffelenは、リスナーを256 KB以下で起動する方法はありますか? –

答えて

12

変更floatに変換を強制的にprogressのあなたの計算における用語のグループ分けに達したときに、両方のlogcat &プログレスバーがのみを示しています。あなたのコードが今では、2つの長所を分けています。除算の結果はgetBytesTransferred() == getTotalByteCount()まで0になり、その後1になります。

double progress = (100.0 * taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount(); 
+0

ありがとうございます。それはうまくいった –

+2

ああ...それはコードサンプルのばかげた間違いです。私はそれを修正するためにメモを作った。 –

+2

@FrankvanPuffelen Sir私はすでに問題をhttps://code.google.com/p/android/issues/detail?id=215428で報告しました –