私はFirebaseStorageからバイトデータを返す静的関数にパスを渡してファイルをダウンロードする方法を探しています。StorageReferenceバイトを返す静的関数を作成する
public static Bitmap getBitmapFromStringPath(String path)
{
final Bitmap[] bitmap = new Bitmap[1];
StorageReference storage = FirebaseStorage.getInstance().getReference(path);
storage.getBytes(1024 * 1024).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
bitmap[0] = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
});
return bitmap[0];
}
はもちろん、これはFirebaseがリアルタイムサービスであるが、私はいくつかの回避策がにあると確信しているので、(すべてのリターンがnull)期待通りに動作しませんでした:私は、ビットマップを取得するには、このような何かを試してみました私が探しているものを達成する。私は簡単で簡単なものが必要です。
私が代わりにImageViewのを更新することを変更しましたし、いいね。私もTasks.await()を実行しようとしましたが失敗しました。私はUIスレッドを全くブロックしても構わないので、何をお勧めしますか? –
あなたはUIスレッドをブロックしても構いませんが、ユーザーはこれを気にする必要はありません。あなたがそうしたときにアンドロイドがそれを検出し、「アプリケーションが応答していません」というダイアログが表示されます。これに関する別の回答(リアルタイムデータベースを使用し、Cloud Storageにも等しく適用されます)については、https://stackoverflow.com/questions/33203379/setting-singleton-property-value-in-firebase-listenerを参照してください。 –
I待っているセマフォの多くを試してみました。私はHTTP GETコールを使用してデータを取得することができましたが、それはデバイス上にキャッシュされたFirebaseデータを手伝ってくれません:( 私は降伏させていただきます...しかし、フランクを助ける –