ImageManagerActivity
に選択・撮影した画像を保持するプロパティを設定し、ImageManagerActivity
を終了する直前に、そのプロパティを元にBitmapに変換して、その値をsetResult()
に設定すれば、onActivityResult()
は使用しますが、やりたいことが実現できると思います。
Java
1//質問文に明記されていなかったため、以下のコードでは、
2//ImageManagerActivityで選択・撮影した画像はUri形式でその保存先Uriを取得できるものとする。
3//また本筋とは関係のないコードは省略しています。
4public class ImageManagerActivity extends Activity {
5
6 //選択・撮影した画像の保存先URIを保持するリスト
7 private ArrayList<Uri> pictureUriList = new ArrayList<>();
8
9 @Override
10 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
11 super.onActivityResult(requestCode, resultCode, data);
12 Bundle bundle = data.getExtras();
13
14 //~~略~~
15
16 //ここで選択・撮影した画像をpicureUriListに保持させる
17 this.picutreList.add(selectingOrTakingPictureUri)
18
19 }
20
21 //全ての選択・撮影が完了したときに呼ばれるメソッド
22 private void onFinishSelectingOrTakingPicture(){
23
24 //ここで、任意のUri→Bitmapの変換処理を行う
25 List<Bitmap> bitmaps = BitmapHenkanUtils.convertUriToBitmap(this.pictureUriList);
26
27 //インテントの作成
28 Intent data = new Intent();
29 Bundle bundle = new Bundle();
30 bundle.putParcelableArrayList("bitmaps", bitmaps)
31 data.putExtras(bundle);
32
33 //Resultを設定して終了する
34 this.setResult(RESULT_OK, data);
35 this.finish();
36
37 }
38
39}
40
追記
投稿してから気づきましたが、一般にBitmapは必要なメモリ容量が大きく、Intentに容量が大きいBitmapを設定するとTransactionTooLargeException
が発生するため、この方法では容量が大きなBitmapは渡せないです。
メモリ消費を抑えるという観点からも、やはりImageManagerActivity
ではUri/FileなどのListを返し、呼び出し元で変換ユーティリティクラスなどを用いて、必要な時にBitmap化した方が良いかもしれません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/28 22:56