我的应用程序使用以下逻辑:在拍摄照片/视频后,活动A中的按钮单击启动手机摄像头(用户在相机窗口中按下“保存”)活动B开始。活动B包含拍摄的照片/视频的预览以及通过http请求上传媒体数据的可能性。我不确定如何将拍摄的图像/视频传递给活动B ..我无法在活动A中使用StartActivityForResult启动相机,因为结果必须传递给活动B.任何想法都要这样做吗?
答案 0 :(得分:2)
有3种解决方案可以解决这个问题。
1)首先将图像转换为字节数组然后传入Intent,然后在下一个活动中从Bundle获取字节数组并转换为图像(位图)并设置为ImageView。
将位图转换为字节数组: -
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
将字节数组传递给intent: -
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("picture", byteArray);
startActivity(intent);
从Bundle获取字节数组并转换为位图图像: -
Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(bmp);
2)首先将图像保存到SDCard中,然后在下一个活动中将此图像设置为ImageView。
3)将Bitmap传递给Intent并从bundle获取下一个活动中的位图,但问题是如果你的Bitmap / Image大小很大,那么下一个活动中的图像就不会加载。
答案 1 :(得分:0)
一:首先将图像保存到SDCard中,然后在下一个活动中将此图像设置为ImageView。
二:你也可以保存到一个字节数组并将其传递给下一个活动:
Intent A1 = new Intent(this, NextActivity.class);
A1.putExtra("pic", byteArray);
startActivity(A1);
然后在第二个intent中从Bundle获取Byte数组并转换为Bitmap Image。