Как реализовать ProgressListener при загрузке в Firebase - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь загрузить файлы в Firebase через приложение для Android, поэтому хочу, чтобы процесс загрузки отображался в индикаторе выполнения

Мне удалось реализовать это раньше, когда я использовал другой метод TaskSnapshot: progress = (100.0 * taskSnapshot.getBytesTransferred ()) / taskSnapshot.getTotalByteCount (), но сейчас, похоже, я не могу найти способ

    private void uploadFile(Uri data) {

  progressBar.setVisibility(View.VISIBLE);
  final   StorageReference sRef = 
 mStorageReference.child(Constants.STORAGE_PATH_UPLOADS + 
  System.currentTimeMillis() + ".pdf");
  Task<Uri> urlTask = sRef.putFile(data).continueWithTask(new 
  Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
        @Override
        public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) 
 throws Exception {
            if (!task.isSuccessful()) {
                throw task.getException();
            }

            // Continue with the task to get the download URL
            return sRef.getDownloadUrl();
        }
    })
          .addOnCompleteListener(new OnCompleteListener<Uri>() {
        @Override
        public void onComplete(@NonNull Task<Uri> task) {
            if (task.isSuccessful()) {
                progressBar.setVisibility(View.GONE);
                textViewStatus.setText("File Uploaded Successfully");
                Uri downloadUrl = task.getResult();
                String url=downloadUrl.toString();
                Upload upload = new Upload(editTextFilename.getText().toString(),url);
                mDatabaseReference.child(mDatabaseReference.push().getKey()).setValue(upload);

            }
        }
    })
          .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
            Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
        }
    })
          .addOnProgressListener(new OnProgressListener<Uri>() {
      @Override
      public void onProgress(Uri uri) {
          double progress =
          textViewStatus.setText((int) progress + "% Uploading...");
      }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...