我正在使用本机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.这里的问题是没有问题的设备,例如DCIM上的galaxy SIII和Imagename以及应用程序数据文件夹上的Imagename不同.
非常感谢
解决方法:
AFAIK,您不能可靠地(独立于设备)告诉相机应用程序a)保存图像的位置,以及b)仅保存一次.我不得不采取这种方法:
1)通过删除putExtra(…)语句,让相机应用将图片保存到喜欢的地方:
`intent.putExtra(MediaStore.EXTRA_OUTPUT, mNextimagefileUri); // set the image file name`
此 *** 作(即未设置EXTRA_OUTPUT)将确保仅将一张图像保存到默认图片位置.
2)查找最后拍摄的照片,并保存其ID,以备日后安全检查. (查询最后一个图像ID,按DATE_TAKEN排序.)
3)触发捕获意图,并再次在onActivityResult中获取最后拍摄的图像,并保存其ID,URI和路径.
4)如果您的新图片ID是>比以前保存过的要好,继续,否则恐慌…
5)将原始图像文件(使用其路径)移动到首选位置.现在,原始文件已删除.
6)使用其URI删除原始媒体映像条目.现在,图像也从图库中删除了.
7)如果您也想删除缩略图,则需要类似地进行查询和删除,但我建议您不要这样做:设备重启或其他媒体扫描应刷新缩略图缓存.另外,删除原始图像后,您实际上很可能需要短暂的缩略图. (如果需要的时间更长,则需要小心:如果将照片移到私有应用程序目录(getExternalfilesDir(Environment.DIRECTORY_PICTURES)),媒体管理器将无法(能够)为您生成缩略图,因此您可能需要管理自己的缩略图.)
总结以上是内存溢出为你收集整理的Android:DCIM文件夹中的照片存储重复全部内容,希望文章能够帮你解决Android:DCIM文件夹中的照片存储重复所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)