2017-08-16 12 views
0

私はFirebase Storageを使って画像を保存しています。私はAndroid上でこれらをダウンロードすることはできません。私はフォルダのすべてのイメージをダウンロードしたいと思いますが、私はリストとしてすべてのイメージをダウンロードする方法がわからないので、今はただ1つだけダウンロードしたいと思います。 私はこのAndroidでFirebase Storageから画像をダウンロードするにはどうすればよいですか?

public static final String TAG = "AtividadesFragment"; 
    ImageView imageView; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_atividades,container,false); 
     Log.i(TAG,"onCreateView()"); 
     imageView = (ImageView) v.findViewById(R.id.image); 
     return v; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     FirebaseStorage storage = FirebaseStorage.getInstance(); 
     StorageReference ref = storage.getReference().child("ImagensExercicios/abdominal_1.bmp"); 

     Glide.with(getActivity()).using(new FirebaseImageLoader()).load(ref).into(imageView); 
    } 

のXmlしようとしている:

<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</android.support.constraint.ConstraintLayout> 

をしかし、何も起こりません。

enter image description here

答えて

1

私はFirebaseストレージからのjpg画像を取得するために、次のコードを使用しています。 は、BMP画像を取得するには、私は違いはFile.createTempFileのパラメータ(「イメージ」、「JPG」)//またはBMPになると思います。 それもあなたのために働くことを願っています。

private Bitmap my_image; 
StorageReference ref = storage.getReference().child("ImagensExercicios/abdominal_1.bmp"); 
try { 
     final File localFile = File.createTempFile("Images", "bmp"); 
     ref.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() { 
      @Override 
      public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) { 
       my_image = BitmapFactory.decodeFile(localFile.getAbsolutePath()); 
      } 
     }).addOnFailureListener(new OnFailureListener() { 
      @Override 
      public void onFailure(@NonNull Exception e) { 
       Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     }); 
} catch (IOException e) { 
     e.printStackTrace(); 
} 

もう一つのノートでは、私は非同期タスクの動作を達成するためのAsyncTaskクラス内のコードを使用していますということです。

2

あなたはグライドとImageViewのにStorageReferenceをロードしようとしている:StorageReferenceは、オブジェクトの動作方法ではありません

StorageReference ref = storage.getReference().child("ImagensExercicios/abdominal_1.bmp"); 
Glide.with(getActivity()).using(new FirebaseImageLoader()).load(ref).into(imageView); 

。 StorageReferenceは、ストレージバケット内のファイルへのポインタに過ぎません。そのコンテンツをダウンロードしたい場合は、fetch a download URL from it firstが必要です。そのタスクが非同期で完了するのを待ってから、そのURLを使用してImageViewに読み込みます。

0

だから、私が試した:

FirebaseStorage storage = FirebaseStorage.getInstance(); 
    storage.getReference().child("ImagensExercicios/abdominal_1.bmp").getDownloadUrl(). 
      addOnCompleteListener(new OnCompleteListener<Uri>() { 
       @Override 
       public void onComplete(@NonNull Task<Uri> task) { 
        Log.i(TAG,"onComplete()"); 
       } 
      }). 
      addOnFailureListener(new OnFailureListener() { 
       @Override 
       public void onFailure(@NonNull Exception e) { 
        Log.i(TAG,"onFailure() " + e.getMessage()); 
       } 
      }). 
      addOnSuccessListener(new OnSuccessListener<Uri>() { 
       @Override 
       public void onSuccess(Uri uri) { 
        Log.i(TAG,"onSuccess()"); 
       } 
      }); 

を、私は、ファイルを取得する方法は?可能であれば、どのようにすべてのファイルをダウンロードするのですか?

関連する問題