如何通过android中的多个活动使用相机拍摄的位图?

时间:2016-09-07 02:48:25

标签: android image android-intent android-activity bitmap

我正在制作一个照片应用程序,在第一个活动中用户拍照(他可以在ImageView中看到图片),在他选择的第二个活动中与谁共享图像,在第三个活动中他应该能够在不同的ImageView中再次看到图像,而不是第一次添加一些数据。我知道如何通过意图将位图从一个活动移动到下一个活动,但如果我想将它发送到我的用户路径的第三个活动,该怎么做?如果我是startActivity(意图)它将跳过我的第二个活动,如果我没有把它第3个活动显示我一个空的ImageView ..有人可以帮我告诉我如何自动加载(没有用户交互)的方法这张照片在第1和第3活动和一些例子中?

我已经在阅读有关如何转换为Base64并再次加载的帖子,但他们的示例正在使用手机内存中的图像,在我的情况下是用户刚刚拍摄的图片,所以原则上我不要我不知道图像文件的名称..

非常感谢!

2 个答案:

答案 0 :(得分:0)

实际上在第二个活动中,您需要从第一个活动中获取Intent并完成您的工作,然后创建新的Intent并将您的图像放入其中,最后使用新意图启动第三个活动。

在第二项活动中:

Intent firstToSecodeIntent = getIntent();
// some codes
Intent secondToThirdIntent = new Intent(this, ThirdActivity.class);
Intent.putExtra("image", /*your Image object*/);
startActivity(secondToThirdIntent);

在第三项活动中:

Intent secondToThirdIntent = getIntent();
// get your image and set it into your imageView

答案 1 :(得分:0)

在您的Custome Catch文件夹中添加此图像

在外部或内部存储中制作文件夹

然后保存将由相机内的文件夹捕获的图像..

public static void SaveImagecatch(Bitmap finalBitmap) throws IOException {

    File Folder = new File(Environment.getExternalStorageDirectory() + "/data/Catch");
    if (Folder.mkdir()) {
        nomediaFile = new File(Environment.getExternalStorageDirectory() + "/data/Catch/" + NOMEDIA);
        if (!nomediaFile.exists()) {
            nomediaFile.createNewFile();
        }
    }
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/data/Catch");
    myDir.mkdirs();
    Random generator = new Random();
    int n = 10000;
    n = generator.nextInt(n);
    String fname = "Image-" + n + ".jpg";
    File file = new File(myDir, fname);
    Catch_uri = Uri.parse("file://" + myDir + "/" + fname);
    if (file.exists()) file.delete();
    try {
        FileOutputStream out = new FileOutputStream(file);
        finalBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
        out.flush();
        out.close();
        Log.e("yes", "yes");
    } catch (Exception e) {
        e.printStackTrace();
        Log.e("no", "no");
    }
}

然后..从您保存的图像的Uri路径获取图像。

Uri imageUri = Catch_uri; 
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
Imageview my_img_view = (Imageview ) findViewById (R.id.my_img_view);
my_img_view.setImageBitmap(bitmap);

这是为我工作..我希望这对你有帮助