0
誰も助けてください。非同期の複数の写真がFirebaseでアップロードされます
Firebaseで複数の写真をアップロードする際に問題があります。私の問題は、UploadTaskがアップロードされる写真をループするときに、別のスレッドで動作するように見えるので、最初の写真がまだアップロードされている間にループがすべての写真を繰り返し処理するようになります。 ループを1つずつアップロードしたいので最初の写真は
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
switch(item.getItemId()){
case R.id.add_photo_option:
item.setEnabled(false);
final ProgressDialog dialog = new ProgressDialog(getActivity());
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
for (int x = 0; x < photosList.getAdapter().getItemCount(); x++){
int photoNumber = x+1;
dialog.setTitle("Uploading photo no: " + photoNumber);
dialog.show();
ImageAdapter adapter = (ImageAdapter) photosList.getAdapter();
Uri photoUri = adapter.getPhotoUri(x);
String path = "photos/" + UUID.randomUUID() + ".png";
StorageReference storage = mStorageRef.getReference(path);
UploadTask task = storage.putFile(photoUri);
task.addOnProgressListener(getActivity(), new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
long progress = taskSnapshot.getBytesTransferred();
long totalBytes = taskSnapshot.getTotalByteCount();
dialog.setMessage("Uploading: " + progress + " KBs out of " + totalBytes + " KBs");
}
});
task.addOnSuccessListener(getActivity(), new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
dialog.setMessage("Uploaded");
item.setEnabled(true);
Toast.makeText(getActivity(), taskSnapshot.getDownloadUrl().toString(), Toast.LENGTH_SHORT).show();
}
});
}
dialog.dismiss();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Android metodのputFilesはまだありません! :( –
しかし、あなたは 'putFile'(https://firebase.google.com/docs/storage/android/upload-files#upload_from_a_local_file)を使って簡単に実装し、上記のような' putFiles'関数を作成することができます。 –