カメラの画像プレビューからのIntentから画像を取得する
|今回はカメラのプレビュー画面の共有ボタンから発行されるIntentから、画像を取得する方法を紹介します。
詳細は以下から。
AndroidManifestの編集
まずは、カメラのプレビュー画面の共有ボタンから発行されるIntentを受け取る為にAndroidManifestを編集します。
カメラのプレビュー画面の共有ボタンから発行されるIntentのアクションがandroid.intent.action.SENDで、カテゴリーはandroid.intent.category.DEFAULT、データのタイプはimage/jpegですので、AndroidManifestのactivityタグ内に以下のようにintent-filterを追記します。
<intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/jpeg" /> </intent-filter>
Intent.EXTRA_STREAMからUriを取得する
ファイルなどのUriをIntentで受け渡す場合は通常、Intent.EXTRA_STREAMを使用します。カメラのプレビュー画面から送られてくる画像のUriもIntent.EXTRA_STREAMを使用して送信されてきます。
Intent.EXTRA_STREAMからUriを取得するためにはgetParcelableExtraメソッドを使用します。
//Intentの取得 Intent cameraIntent = getIntent(); //画像のUri取得 Uri uri; if (Intent.ACTION_SEND.equals(cameraIntent.getAction())) { uri = cameraIntent.getParcelableExtra(Intent.EXTRA_STREAM); }
取得したUriからMediaStoreを使用して画像を取得する
getParcelableExtraメソッドで取得したUriから画像を取得するにはMediaStoreを使用して以下のように記述します。
Bitmap cameraImage = null; try { cameraImage = MediaStore.Images.Media.getBitmap(getContentResolver() , uri); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }