2012-04-17 85 views
0

我工作的一个项目,通过ImageView的读取绘制文件夹的图像文件的SD卡,它加载成功通过保存图像在相机活动

ImageView view = (ImageView) findViewById(R.id.imageView); 
view.setOnTouchListener(this); 
buttonTakePicture = (Button) findViewById(R.id.takepicture); 
buttonTakePicture.setOnClickListener(new Button.OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     camera.takePicture(myShutterCallback, myPictureCallback_RAW, 
      myPictureCallback_JPG); 

现在按takePicture按钮后,图像应保存在SD卡,它正在快照而不是与保存图像时,代码如下

File file = new File(mScreenshotPath + "/" + System.currentTimeMillis() + ".jpg"); 
FileOutputStream fos; 
try { 
    imageFileOS = getContentResolver().openOutputStream(uriTarget); 
    imageFileOS.write(arg0); 
    imageFileOS.flush(); 
    imageFileOS.close(); 
    fos = new FileOutputStream(file); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
    fos.close(); 
    Toast.makeText(AndroidCamera.this, 
      "Image saved: " + uriTarget.toString(), 
      Toast.LENGTH_LONG).show(); 

请帮我这个问题....在此先感谢

回答

3

您可以将照片保存在Android中,而无需使用OutputStream以及随附的所有其他逻辑。这是一个简单的配方,它会做我认为你正在努力完成的事情。要特别注意意图以及如何使用它来设置图像的保存,因为这是我认为你出错的地方。

public class PhotoActivity extends Activity implements OnClickListener { 

private Button takePicture; 
private String path; 
private File imageFile; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.your_layout); 
    takePicture = (Button) findViewById(R.id.button1); 
    takePicture.setOnClickListener(this); 

    path = Environment.getExternalStorageDirectory() + "/my_image.png"; 
    imageFile = new File(path); 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.button1: 
     Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     Uri uri = Uri.fromFile(imageFile); 
     i.putExtra(MediaStore.EXTRA_OUTPUT, uri); 

     startActivity(i); 
     break; 
    } 
} 
} 
+0

非常有益的和有用的答。 – Numair 2012-12-17 19:49:28

1
private static final int CAMERA_REQUEST = 1888; 
    buttonTakePicture.setOnClickListener(new Button.OnClickListener() { 
       @Override 
       public void onClick(View arg0) { 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri()); 

    startActivityForResult(intent, CAMERA_REQUEST); 

        } 

      }); 

    @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 

      if (requestCode == CAMERA_REQUEST) { 

        photo = (Bitmap) data.getExtras().get("data"); 



       } 
    } 

    private Uri getImageUri() { 


      File file1 = new File(Environment.getExternalStorageDirectory() + "/Camerafolder"); 
      if (!file1.exists()) 
      { 
       file1.mkdirs(); 
      } 

      File file = new File(Environment.getExternalStorageDirectory() + "/Camerafolder/"+"img"+".png"); 

    Uri imgUri = Uri.fromFile(file); 

      return imgUri; 
     } 
相关问题