こんにちは私はイメージのfirebaseのストレージアップロードを実装しています。Android Firebaseアップロードファイル時間
私がやっていることは、自分のギャラリーから画像を選択し、それをImageViewに表示してから、ストレージにアップロードすることです。
すべて動作します。しかし、私が懸念しているのは、初めて画像をアップロードするときです。テストして、ダウンロードパスを返すのに1分ほどかかります。
最初の時間が1秒未満で終わった後。私の問題は、 "画像のアップロード"アクティビティを閉じた後、別のImageViewsにそのパスを使用したいということです。
ここに私のコードです。
私はここに続いて
private View.OnClickListener dialogListener = new View.OnClickListener() {
@Override
public void onClick(View view) { clicked.length());
final Dialog dialog = new Dialog(EditProfileActivity.this);
dialog.setContentView(R.layout.galleryoptions);
dialog.setTitle("Gallery Options");
Button gallery = (Button) dialog.findViewById(R.id.buttonGallery);
gallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, RESULT_LOAD_IMAGE);
}
});
dialog.show();
}
};
(私は後でFacebookのオプションが表示されます)ギャラリーを選択するためのダイアログを持っているアクティビティの結果は、電話内のログ「PATHの両方の間の時間
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
//GET PATHS
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
Log.d(TAG, "PICTURE PATH IN PHONE: " + picturePath);
cursor.close();
clicked = "iv_"+clicked;
int resID = getResources().getIdentifier(clicked, "id", "com.my.project");
ImageView imageView = (ImageView) findViewById(resID);
imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
//UPLOAD FILE TO FIREBASE
Uri file = Uri. fromFile(new File(picturePath));
String extension = file.getLastPathSegment();
extension = extension.substring(extension.lastIndexOf("."));
StorageReference riversRef = storageRef.child("images/"+ user.getUid().toString()+"/"+clicked+extension);
UploadTask uploadTask = riversRef.putFile(file);
// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
Uri downloadUrl = taskSnapshot.getDownloadUrl();
Log.d(TAG, "DOWNLOAD PATH IN FIREBASE: " + downloadUrl);
}
});
}
}
です"そして" FIREBASEのPATH "は最初の1分ほどであり、その後はかなり速いです。質問は、あなたが2度目ではなく常にスピードアップロードを行う方法や方法やパターンを知っていますか? あなたは何をお勧めしますか?ストレージの代わりにリアルタイムデータベースを使用してBase64にイメージを保存する方が良いでしょうか?
この場合、状態を一時停止から手動で変更してファイアベース内のバックエンドを再開する方法をご存知ですか?私はfirebaseを初めて使っています。 – Sergio
あなたはそれを行うことはできません – tyczj
hehe okありがとう! – Sergio