gpt4 book ai didi

Android:DCIM 文件夹中的重复照片存储

转载 作者:行者123 更新时间:2023-11-29 17:55:09 26 4
gpt4 key购买 nike

我正在使用 native Android 相机并将文件保存到应用程序数据文件夹 (/mnt/sdcard/Pictures/)。同时 - 在某些设备上 - 另一张照片副本保存到 DCIM 文件夹。

这是我的代码:

private void startStockCameraForResult()
{
// create Intent to take a picture and return control to the calling application
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

// mediaStorageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
mNextImageFileUri = ImageFileUtils.getOutputMediaFileUri();
intent.putExtra(MediaStore.EXTRA_OUTPUT, mNextImageFileUri); // set the image file name

// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}

如何防止在 DCIM 文件夹中保存额外的图像副本?

我的问题是代码生成
1 张照片:三星 Galaxy SIII、华为 HUAWEI P2-6011 等
2 张照片:Samsung Galaxy SI、Htc HTC One XL 等。

其他线程描述了删除最后添加到 DCIM 的图像。这里的问题是没有问题的设备,如 Galaxy SIII,DCIM 和应用程序数据文件夹上的图像名称不同。

非常感谢

最佳答案

据我所知,您无法可靠地告诉相机应用程序(独立于设备)a) 将图像保存在何处以及 b) 也只保存一次。我不得不求助于这种方法:

1) 只需删除 putExtra(...) 语句,让相机应用将图片保存到它喜欢的任何位置:

`intent.putExtra(MediaStore.EXTRA_OUTPUT, mNextImageFileUri); // set the image file name`

这(即设置 EXTRA_OUTPUT)将保证只有一张图像将保存到默认图片位置。

2) 找到最后拍摄的照片,并保存其 ID,以供以后进行安全检查。 (查询最后一张图片 ID,按 DATE_TAKEN 排序。)

3) 触发捕获 Intent,在您的 onActivityResult 中,再次获取最后拍摄的图像,并保存其 ID、URI 和路径。

4) 如果你的新图片 ID 大于之前保存的那个,继续,否则 panic ......

5) 将原始图像文件(使用其路径)移动到您喜欢的位置。现在,原始文件已被删除。

6) 使用其 URI 删除原始媒体图像条目。现在该图像也已从图库中删除。

7) 如果您还想删除缩略图,那么您需要以类似方式查询和删除它们,但我建议您不要这样做:设备重启或其他媒体扫描应该会刷新缩略图缓存。此外,在删除原始图像后,您实际上很可能会在短时间内需要该缩略图。 (如果您需要更长的时间,则需要小心:如果您将照片移动到私有(private)应用程序目录 (getExternalFilesDir(Environment.DIRECTORY_PICTURES)),媒体管理器不会(能够)为您生成缩略图,因此您可能需要管理自己的缩略图。)

关于Android:DCIM 文件夹中的重复照片存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19940270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com