如何将相机拍摄的图像传递到android中的下一个屏幕?

时间:2011-11-07 10:11:41

标签: android

我在android中使用相机应用程序。我想将字节数据从PictureCallback方法传递给另一个活动,并希望在该活动中显示它。

Camera.PictureCallback jpegCallback = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {


        }
    };

如果有人知道,请帮助我..

2 个答案:

答案 0 :(得分:4)

你可以用额外的东西来做到这一点:

Camera.PictureCallback jpegCallback = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {
            Intent i = new Intent(context, B.class);

            Bundle bundle = new Bundle();
            bundle.putByteArray("photo", data);
            i.putExtra(bundle );
            startActivity(i);
        }
};

和B活动:

Bundle extras = getIntent().getExtras();
byte[] photo = extras.getByteArray("photo");

要在第二个活动上显示图像,您必须将byte []转换为位图并将其指定给imageView:

Bitmap bitmap  = decodeByteArray (photo, 0, photo.length);
ImageView imgView = (ImageView)findViewById(R.id.preview);
imgView.setImageBitmap(bitmap);

我从未尝试从byte []解码到位图..但您可以找到更多信息here

编辑: @ ss1271的评论是对的。根据{{​​3}},似乎有500Kb的限制。这意味着如果您的图像很大,您应该保存它并将引用传递给新活动,如下所示:

// A ACTIVITY

Camera.PictureCallback jpegCallback = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {
            String fileName = "tempIMG.png";
            try {
                FileOutputStream fileOutStream = openFileOutput(fileName, MODE_PRIVATE);
                fileOutStream.write(data);
                fileOutStream.close();
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
            Intent i = new Intent(context, B.class);

            Bundle bundle = new Bundle();
            bundle.putExtra("photoPath", fileName);
            i.putExtra(bundle);
            startActivity(i);
        }
};

// B ACTIVITY

Bundle extras = getIntent().getExtras();
String photoPath = extras.getString("photoPath");
File filePath = getFileStreamPath(photoPath);
//And do whatever you want to do with the File

答案 1 :(得分:0)

您可以通过putExtra(字符串名称,字节值)将字节(数据)添加到Intent,并使用该Intent启动一个新的Activity。

祝福, 添