android - 拍摄照片而不保存

标签 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 文件,这样图库就无法访问它。
  • 删除或保存对图片的应用,并将其保留在该文件夹中。

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

有什么“简单”的方法可以做到这一点吗?

创建文件夹和创建该文件的部分没什么大不了的,所以:

- 如何为我的 App 拍摄的照片设置保存路径?

谢谢。

编辑:

好的,我找到了一些代码,但它不起作用(即使我给了 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);

最佳答案

好吧,我终于找到了如何将图片保存到我们想要的 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 上写入的权限。

关于android - 拍摄照片而不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185184/

相关文章:

java - Mediaplayer 未打开选定的文件 android(setDataSource 失败。: status=0x80000000)

Nexus 7 上的 Android 4.2 : canvas. drawText() 无法正常工作

android - 在 Kitkat 上编译的 Lollipop 优化应用程序 - LayoutInflaterCompatHC NoClassDefFoundError

android - 在相机预览中不工作 setAlpha

android - 无法在线程内创建处理程序

java - Android 中 ListView 的自定义光标适配器的问题

android - 我怎么知道来自android相机onPreviewFrame的YUV格式?

Android:BroadcastReceiver Intent 检测拍摄的相机照片?

android - 无法同时从 onPreviewFrame 回调中录制视频和取帧

java - Android 应用程序 - 带有相机应用程序的弹出菜单