ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: Android : Firebase storage の画像をダウンロードしてギャラリーとImageView に表示
名前: lightbox
処理選択
パスワード

件名 Android : Firebase storage の画像をダウンロードしてギャラリーとImageView に表示
名前 lightbox
コメント
@DIV
public class MainActivity extends AppCompatActivity {

	// ダウンロード用
	private FirebaseStorage storage;
	private StorageReference storageRef;
	private StorageReference imageRef;
	private ImageView imageView;
	private File galleryFile;
	private String imagePath;
	private ProgressDialog progress;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

// ▼ テスト用のルール
//		service firebase.storage {
//			match /b/freebase-654b7.appspot.com/o {
//				match /{allPaths=**} {
//					allow read;
//					allow write: if true;
//				}
//			}
//		}

		// ダウンロードするファイル
		storage = FirebaseStorage.getInstance();
		storageRef = storage.getReferenceFromUrl("gs://freebase-654b7.appspot.com/");
		imageRef = storageRef.child("sworc2.png");

		// 表示する場所
		imageView = (ImageView) MainActivity.this.findViewById(R.id.imageView);

		// ダウンロード中のダイアログ
		progress = new ProgressDialog(MainActivity.this);

		// *************************************
		// ギャラリーにダウンロードして表示
		// *************************************
		Button galleryButton = (Button) MainActivity.this.findViewById(R.id.galleryButton);
		galleryButton.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				// ダウンロード中の表示
				progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
				progress.setMessage("画像をダウンロードしています");
				progress.show();

				// ギャラリー用に内部ストレージにフォルダを作成
				String firebaseImageDir = Environment.getExternalStorageDirectory().getPath() + "/firebase";
				File file = new File(firebaseImageDir);
				// ディレクトリ初期作成
				if (!file.exists()) {
					if (file.mkdir() == false) {
						Log.i("lightbox", "ディレクトリを作成できませんでした");
						return;
					}
				}

				// ギャラリー用画像保存パス
				Calendar cal = Calendar.getInstance();
				SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd_HHmmss");
				imagePath = firebaseImageDir + "/" + sf.format(cal.getTime()) + ".png";
				galleryFile = new File(imagePath);

				// ファイルにダウンロード
				imageRef.getFile(galleryFile)
					.addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
					@Override
					public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {

						// ダウンロード中の表示解除
						progress.dismiss();

						// ギャラリーに反映
						MediaScannerConnection.scanFile(
							MainActivity.this,
							new String[] { imagePath },
							new String[] { "image/png" },
							null);

						// ImageView に表示
						FileInputStream fis = null;
						try {
							fis = new FileInputStream(galleryFile);
							if ( fis != null ) {
								Bitmap image = BitmapFactory.decodeStream(fis);
								imageView.setImageBitmap(image);
							}
						} catch (FileNotFoundException e) {
							e.printStackTrace();
						}

					}
				}).addOnFailureListener(new OnFailureListener() {
					@Override
					public void onFailure(@NonNull Exception e) {
						Log.i("lightbox","ダウンロードできませんでした");
						Log.i("lightbox",e.getMessage());
						// ダウンロード中の表示解除
						progress.dismiss();
						// メッセージ表示
						Toast.makeText(MainActivity.this,"ダウンロードに失敗しました",Toast.LENGTH_LONG).show();

					}
				});

			}
		});

	}
}

@END