Intentを発行して画像を選択orカメラで撮影して、画像を表示させる

端末内に保存されている画像を表示したり、もしくはその場でカメラで撮影した画像を表示させる方法です。 例えばSNSへ投稿する画像を選択したりするのに使うことが考えられますかね。 やり方としてはIntentを発行して、startActivityResult()で結果を受け取って表示させるようになります。 画像の選択とカメラでの撮影は異なるアクションなので、1つのIntentで表現するにはIntent.createChooser()で複数のIntentをひとまとめにして発行することになります。 やってみると、カメラで撮影した画像を受け取るのにちょっと工夫が必要なだけで、割と簡単に実装できました。 Getting a Result from an Activity – Android Developers Intentの発行 画像を選択するIntent Intent pickPhotoIntent = new Intent() .setType("image/*") .setAction(Intent.ACTION_GET_CONTENT); カメラで撮影するIntent カメラで撮影する場合、以下のIntentでも撮影→その画像を受取ることができますが、そのままでは画像サイズがとても小さくなってしまいます。(サムネイルサイズの小さな画像が返ってくる) Intent takePhotoIntent = new Intent() .setAction(MediaStore.ACTION_IMAGE_CAPTURE); 複数のIntentを埋め込む Intent chooserIntent = Intent.createChooser(pickPhotoIntent, "画像を選択"); chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,new Intent[]{takePhotoIntent}); 作成したIntentの1つを元にしてcreateChooser()を呼び出して作成したIntentに、Intentの配列を埋め込みます。 画像を受け取る @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == REQUEST_GET_IMAGE && resultCode == Activity.RESULT_OK) { if (data != null) { Bitmap image = null; if (data.getExtras() != null && data.getExtras().get("data") != null) { image = (Bitmap) data.getExtras().get("data"); mImageView.setImageBitmap(image); } else { try { InputStream stream = getContentResolver().openInputStream(data.getData()); image = BitmapFactory.decodeStream(stream); mImageView.setImageBitmap(image); } catch (FileNotFoundException e) { e.
Read full post gblog_arrow_right