android将媒体数据传递给另一个活动

时间:2012-12-12 10:30:25

标签: android android-camera android-camera-intent

  

可能重复:
  Passing image from one activity another activity

我的应用程序使用以下逻辑:在拍摄照片/视频后,活动A中的按钮单击启动手机摄像头(用户在相机窗口中按下“保存”)活动B开始。活动B包含拍摄的照片/视频的预览以及通过http请求上传媒体数据的可能性。我不确定如何将拍摄的图像/视频传递给活动B ..我无法在活动A中使用StartActivityForResult启动相机,因为结果必须传递给活动B.任何想法都要这样做吗?

2 个答案:

答案 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。