Android 当我在应用程序中拍摄照片时,如何阻止相机保存照片副本
我制作了一个应用程序,可以拍摄照片并保存在SD卡中,扩展名为(.x)。 一切正常,但每次我拍摄图像时,它都会保存在两个地方:我的目录和相机目录 我的问题:如何阻止它保存在gallery中Android 当我在应用程序中拍摄照片时,如何阻止相机保存照片副本,android,camera,Android,Camera,我制作了一个应用程序,可以拍摄照片并保存在SD卡中,扩展名为(.x)。 一切正常,但每次我拍摄图像时,它都会保存在两个地方:我的目录和相机目录 我的问题:如何阻止它保存在gallery中 Uri mHighQualityImageUri = generateTimeStampPhotoFileUri(); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE_SECURE); intent
Uri mHighQualityImageUri = generateTimeStampPhotoFileUri();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE_SECURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mHighQualityImageUri);
startActivityForResult(intent, 20);
private Uri generateTimeStampPhotoFileUri() {
Uri photoFileUri = null;
File outputDir = getPhotoDirectory();
if (outputDir != null) {
Time t = new Time();
t.setToNow();
File photoFile = new File(outputDir, System.currentTimeMillis()
+ ".x");
photoFileUri = Uri.fromFile(photoFile);
}
return photoFileUri;
}
private File getPhotoDirectory() {
File outputDir = null;
String externalStorageStagte = Environment.getExternalStorageState();
if (externalStorageStagte.equals(Environment.MEDIA_MOUNTED)) {
File photoDir=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Android/data/mariam.billing/files");
outputDir = new File("/sdcard/Billing/");
if (!outputDir.exists())
if (!outputDir.mkdirs()) {
Toast.makeText(
this,
"Failed to create directory "
+ outputDir.getAbsolutePath(),
Toast.LENGTH_SHORT).show();
outputDir = null;
}
}
return outputDir;
}
int x=0;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (this.requestCode == requestCode && resultCode == RESULT_OK) {
imageHolder.setImageURI(mHighQualityImageUri);
x=1;
}
}
这不是你的错。您的代码看起来正确,并且设备上的摄像头应用程序确实尊重您的额外输出请求 但该应用程序选择将照片的副本保存到其他地方。尝试从Play Store安装。我相信,如果你用它来实现你的行动、图像和捕获意图,你将只得到一份图像 尝试Play Store中的其他应用程序,尤其是。在那里,您可以下载源代码并了解它在启动intent时的实际功能 有数以千计的摄像头应用程序,内置在不同的设备上,可供下载。他们的行为和举止不同。如果你需要更一致的行为,你可以从你的应用程序中拍摄照片,利用Android camera API或使这种集成更容易的库之一
更新正好有一个可追溯到2011年8月的现场直播,哇 获取重复图像的原因是,您同时使用两个摄影机应用程序(即:默认摄影机和正在创建的摄影机)。您正在调用内置相机的意图,因此,默认相机将保存自己的副本,而您的应用程序也会这样做。你可以避免创建像Facebook、Instagram等的定制相机,但你可以创造性地编写代码,如果你想做一个图像上传应用程序的话。您可以让您的相机拍照,在上传或事件结束后,您的应用程序将删除拍摄的图像。或者最好将图像存储在一个隐藏的文件夹中。您可以通过在文件夹名称前包含一个点(.)来隐藏存储文件夹,并且在事件结束时,应用程序再次删除该隐藏文件夹。但同样,这不是一个好的做法。“但每次我拍摄一张照片,它都会保存两个位置,即我的目录和图库”——图库不是一个地方。这是一个应用程序。如果您要求相机应用程序将照片保存在公共场所,则该照片可能会被
MediaStore
索引并显示在gallery应用程序中。使用FileProvider
,您可以要求相机应用程序将照片保存到。显示使用FileProvider
拍摄照片的基本知识。对不起,我的相机目录。我只想将图像保存在我的目录中