拍摄照片而不保存

时间:2013-01-06 18:14:24

标签: android android-camera

我正试图用这段代码拍照:

capturarFoto.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("debugging","Has clicat al botó");
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, 1888);
        }           
    });

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if( requestCode == 1888 && resultCode == -1) { //-1 = TOT HA ANAT BE.
        Bitmap photo = (Bitmap) data.getExtras().get("data");
        Log.d("debugging",""+photo.getHeight());
        Log.d("debugging",""+photo.getWidth());
        ((ImageView) myFragmentView.findViewById(R.id.fotoCapturada)).setImageBitmap(photo);
    }
}

这是完美的,当我拍摄照片时,它显示在ImageView中。但我正在尝试创建某种可编辑的选项,旋转等等。所以我不想保存它(所以画廊已经缓存了它!!)。

我已经阅读了一些类似的问题,这是很棒的事情:

  • 在SDCARD上创建一个文件夹
  • 保存临时图片
  • 创建.nomedia文件,以便图库不访问它。
  • 删除或保存适用于图片,并将其保留在该文件夹中。

我正在尝试更新上面的代码,以适应它来实现这些要点,但我在google中找到的代码,总是使用其他api,其中一些,旧...

有没有“简单”的方法来实现这个目标?

创建文件夹和创建该文件的部分并不是什么大问题,所以:

- 如何为我的应用程序拍摄的照片设置保存路线?

谢谢。

编辑:

好的,我发现了一些代码,但它无法正常工作(即使我提供了SD写入权限):

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            File file = new File(Environment.getExternalStorageDirectory().getPath() + "/folder/" + "filename" + ".jpg");
            Uri imageUri = Uri.fromFile(file);
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

            startActivityForResult(cameraIntent, 1888);

1 个答案:

答案 0 :(得分:1)

好吧,最后我发现了如何将图片保存到我们想要的URI中:

public void onClick(View v) {
            Log.d("debugging","Has clicat al botó");

            File folder = new File(Environment.getExternalStorageDirectory().toString()+"/ImagesFolder/");
            folder.mkdirs();

            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            Uri uriSavedImage=Uri.fromFile(new File(Environment.getExternalStorageDirectory().toString()+"/ImagesFolder/imatge.jpg"));
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);

            startActivityForResult(cameraIntent, 1888);
        }   

就是这样。

请记住授予SDCard写入权限。