2

我正在尝试使用此代码拍照:

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 文件,这样画廊就不会访问它。
  • 删除或保存适用于图片,并将其保留在该文件夹中。

我正在尝试更新上面的代码,以适应它以实现这些点,但我在谷歌找到的代码,总是使用其他 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);
4

1 回答 1

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 上写入的权限。

于 2013-01-06T21:30:06.563 回答