如何将文件写入相机所在的 DCIM 目录?

Dim*_*ims 5 permissions camera android

假设我正在编写一个替代的 Camera 应用程序,并希望将图像写入与 Camera 完全相同的位置,并以与 Camera 完全相同的名称命名它们。

我将如何做到这一点?

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

如何知道当前的命名约定?

如何获得该目录的权限?

任何答案将不胜感激。

更新

好吧,假设它不是真正的相机替代品。假设我想编写图像以外的格式,如音频、视频或其他格式。

更新 2

请解释一下,你到底为什么要投票?

更新 3

是时候尝试所有建议了,但我发现它们都不正确。令人难以置信的是,有多少传奇人物在 Stackoverflow 上行走……

Hem*_*h S 6

我将如何实现这个目标?

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + File.separator + "You Dir. Name";
Run Code Online (Sandbox Code Playgroud)

如果您附加任何字符串来结束此

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)

它将dir在文件夹内创建

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

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

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)

如何知道当前的命名约定?

IMG_yyyyMMDD_timeStamp

如何获得该目录的权限?

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


San*_*ese 5

您无法将其写入与默认相机应用程序完全相同的文件夹中。但你可以利用Environment.getExternalStoragePublicDirectory(Environment.DI\xe2\x80\x8c\xe2\x80\x8b\xe2\x80\x8cRECTORY_DCIM)

\n
\nmediaStorageDir = new File(Environment.getExternalStorageDirectory(), FOLDER_NAME);\nIntent takePictureFromCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);\ntakePictureFromCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, \n     Uri.fromFile(mediaStorageDir));\nstartActivityForResult(takePictureFromCameraIntent, 100);\n\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n