Android携带相机图像到新活动

时间:2012-01-04 10:44:21

标签: android

到目前为止,我让我的应用程序使用相机拍摄照片AndroidCamera.java,然后保存图像并将其显示在新的活动Punch.java中,该活动正常。在此屏幕上有两个选项也可以使用图像或重新拍摄图像如果单击按钮重拍,它将返回到AndroidCamera.java活动,如果点击使用,它将转到活动{{1}这是我想要再次显示图像的新活动。

我只是想弄清楚要放在BeatEmUp.java活动中的内容,以便在这个新的活动中再次显示图像,您可以在下面的代码中看到我将字符串从BeatEmUp.java传递给{{ 1}}但我认为我不能再从AndroidCamera.javaPunch.java再次这样做了吗?

更新Adil Soomro

Punch.java当点击BeatEmUp.java按钮时,活动现在强制关闭。

下面的确定代码已更新我必须将BeatEmUp.java更改为Use,因为一开始它意图给我一个错误我还添加了intent.putExtra("filepath",imagePath); 因为我不是确定如果这是正确的我认为它将与我在Use.putExtra("filepath",imagePath);上显示图像的代码相同

AndroidCamera.java

BeatEmUp.java

Punch.java

Punch.java

BeatEmUp.java

PictureCallback myPictureCallback_JPG = new PictureCallback(){

    public void onPictureTaken(byte[] arg0, Camera arg1) {
        // TODO Auto-generated method stub
        /*Bitmap bitmapPicture 
            = BitmapFactory.decodeByteArray(arg0, 0, arg0.length);  */
        int imageNum = 0;
        Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        File imagesFolder = new File(Environment.getExternalStorageDirectory(), "Punch");
        imagesFolder.mkdirs(); // <----
        String fileName = "image_" + String.valueOf(imageNum) + ".jpg";
        File output = new File(imagesFolder, fileName);
        while (output.exists()){
            imageNum++;
            fileName = "image_" + String.valueOf(imageNum) + ".jpg";
            output = new File(imagesFolder, fileName);
        }

        Uri uriSavedImage = Uri.fromFile(output);
        imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);


        OutputStream imageFileOS;
        try {
            imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
            imageFileOS.write(arg0);
            imageFileOS.flush();
            imageFileOS.close();

            Toast.makeText(AndroidCamera.this, 
                    "Image saved", 
                    Toast.LENGTH_LONG).show();

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Intent intent = new Intent(getBaseContext(), Punch.class);
        intent.putExtra("filepath",Uri.parse(output.getAbsolutePath()).toString());
        //just using a request code of zero
        int request=0;
        startActivityForResult(intent,request); 
    }};

1 个答案:

答案 0 :(得分:1)

是。您可以将该图片URI再次传递给下一个Activity

您只需要在Punch.java类中的类级变量中存储图像路径,并在启动BeatEmUp Activity时,将该图像路径再次放入Intent并将其放入{{1} }}

修改

BeatEmUp

中取一个班级String
Punch.java

String imagePath;

onCreate()

并开始imagePath = this.getIntent().getStringExtra("filepath"); 活动

BeatEmUp