如何将文件写入DCIM目录中的确切位置?

时间:2017-01-21 17:11:32

标签: android permissions camera

假设我正在编写另一个Camera应用程序,并希望将图像精确地写入与Camera相同的位置,并将其命名为Camera相同的名称。

我将如何做到这一点?

如何知道相机文件的位置?

如何了解当前的命名约定?

如何获得该目录的权限?

任何答案都将不胜感激。

更新

好吧,假设它不是替代品。假设我想写除图像以外的格式,如音频,视频或其他内容。

更新2

请解释一下,你为什么要贬低?

更新3

时间来尝试所有建议,我发现它们都不正确。令人难以置信的是,有多少传说在Stackoverflow上行走......

5 个答案:

答案 0 :(得分:3)

您无法准确写入与默认相机应用相同的文件夹。但是你可以使用 Environment.getExternalStoragePublicDirectory(Environment.DI RECTORY_DCIM)

mediaStorageDir = newFile(Environment.getExternalStorageDirectory(),FOLDER_NAME)
Intent takePictureFromCameraIntent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE);   takePictureFromCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(mediaStorageDir));
startActivityForResult(takePictureFromCameraIntent,100);

但请注意,这将在DCIM目录中仅创建一个子文件夹,并且不会准确存储默认相机存储的位置。但您始终可以使用任何所需的文件夹名称创建子文件夹。

`

答案 1 :(得分:3)

我将如何做到这一点?

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + File.separator + "You Dir. Name";

如果你追加任何字符串来结束这个

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)

它会在文件夹

中创建dir

如何知道相机文件的位置?

默认情况下,相机使用此位置

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)

如何了解当前的命名惯例?

IMG_yyyyMMDD_timeStamp

如何获得该目录的权限?

使用权限管理器获取相机和外部存储权限

答案 2 :(得分:1)

要回答这个问题:

  • 每个手机制作人都会创建自己的相机应用程序,并根据其硬件进行定制。

  • 使用正确的权限,App可以(几乎)随意写入...

现在问题:

首先,我们不知道照片的存储位置以及命名约定。每个人和他们的母亲对什么是最好的都有不同的看法。所以没有"嘿,它始终存在"。

寻求的人会发现:得到阅读&为整个设备写permissions。通过该搜索,整个设备可以找到图像所在的文件夹。现在减去来自"社交媒体"的文件夹。我的猜测是具有最多和/或最新图像的文件夹是您想要的文件夹。当然,你需要那些信任你的测试人员。

找到的所有内容都不是无组织的只是找到使用的模式。可能有一个标准。大公司肯定会有一家。您可以向设备询问它有maker的内容。请注意,答案可能不正确。

感谢图片,不,它是一张照片然后你就会得到accessing the camera的有趣部分。美好时光。请记住:请求图片=>获取内存中图片的位置=>将图片保存为文件。最好的部分是,没有强制执行此API的所有部分,因此不同的设备需要不同的指令...

玩得开心祝你好运!

ps,downvotes可能是缺少代码

答案 3 :(得分:0)

尝试使用此代码,您可以使用插入查询

将图像位图保存到目录中
String imgSaved = MediaStore.Images.Media.insertImage(
                getContentResolver(), bitmap,
                System.currentTimeMillis() + ".jpg", "DESCRIPTION HERE");

有关详细信息,请参阅link

答案 4 :(得分:0)

我发现此代码对于选择上次使用的DCIM / Camera文件夹非常有用。

{{1}}