android - 如何将相机捕获的图像传递到android中的下一个屏幕?

标签 android

我正在使用 Android 中的相机应用程序。我想将字节数据从 PictureCallback 方法传递到另一个 Activity ,并希望在该 Activity 中显示它。

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


        }
    };

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

最佳答案

您可以使用附加功能来做到这一点:

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 Activity :

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

要在第二个 Activity 上显示图像,您必须将 byte[] 转换为位图并将其分配给 imageView:

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

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

编辑:@ss1271 的评论是正确的。根据this answer好像有500Kb的限制。这意味着如果您的图像很大,您应该保存它并将引用传递给新 Activity ,如下所示:

// 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

关于android - 如何将相机捕获的图像传递到android中的下一个屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035008/

相关文章:

android - 我如何使用 RotateAnimation 来旋转一个圆?

Android - 在 EditText 中更改文本后*做一些事情

ANDROID STUDIO 3.0 升级: Error:Could not resolve all files for configuration ':app:xxxxxxxDebugCompileClasspath'

java - 如何从 ProGuard 中排除注解处理器依赖

android - 将 OkHttp 与现有的 HttpUrlConnection 代码一起使用?

Android MenuItemCompat.getActionView 总是返回 null

android - 为什么 Three.js 视频无法在我的 Nexus 7 上呈现

android - 如何提取 tar (ed) Android 存储库?

android - 单击 map 标记添加 fragment 列表

android - DDMS 无法将位置发送到模拟器