如何在新活动中使用点击的图片?

时间:2011-06-17 21:08:28

标签: android android-camera

我想使用Android手机摄像头点击图片,然后在另一个活动中使用它。我找不到任何确切的方法,所以我试图获取保存图片的路径,然后在其他活动中使用它。

private OnClickListener cameraBclicked = new OnClickListener() {
    public void onClick(View v) {

        Intent m_Intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(m_Intent, TAKE_PICTURE);
    }
};

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data){

    if ( requestCode == TAKE_PICTURE)
    {
        Uri selectedImage = data.getData();
        Intent intent1 = new Intent(picsource.this,NewScreen.class);
        intent1.putExtra("path", selectedImage);
        startActivity(intent1);
    }

现在,问题是uri出来是null。 请更正以上代码..

2 个答案:

答案 0 :(得分:1)

要开始相机活动,您可以使用以下代码

Intent cameraIntent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(cameraIntent, CAMERA_REQUEST); 

在对图像进行限制后,您将在onActivityResult方法中以位图格式获取捕获的图像。现在,当您获得位图时,在外部存储中写入位图,并将图像的路径传递给您想要传递的其他活动。从第二个活动中,您可以打开文件并获取图像。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
   if (requestCode == 1) {  
        Bitmap bmp = intent.getExtras().get("data");
        ByteArrayOutputStream stream = new ByteArrayOutputStream();

         bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
         byte[] byteArray = stream.toByteArray(); // convert camera photo to byte array

         // save it in your external storage.
        FileOutputStream fo = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/_camera.png"));

        fo.write(byteArray);
        fo.flush();
        fo.close();
   }  
} 

答案 1 :(得分:1)

我已经遇到过这个问题, 这是我的代码错误

Bitmap photo = (Bitmap) data.getData();// This code return null

通过修改代码

解决了我的问题
Bitmap photo = (Bitmap) data.getExtras().get("data");