如何找到安卓手机相机照片文件夹?

13

我正在开发一款安卓相机应用。

其中一个要求是将拍摄的照片保存到设备的默认相机照片文件夹中,也就是 Android 原生相机存储照片的文件夹。

我该如何找出原生相机存储照片的位置呢?据我所知,这可能因制造商(三星、HTC、摩托罗拉、索尼等)和型号(Galaxy Tab、Galaxy S4 等)而异。

3个回答

22

啊!所以DIRECTORY_PICTURES不返回顶级相册目录?这就是让我感到困惑的地方。 - OC2PS
18
我认为DIRECTORY_DCIM更匹配:“将设备挂载为相机时,图片和视频的传统存储位置”。话虽如此,“本机相机”可以按其意愿自行操作,你无法事先知道该相机存储图像的位置。 - CommonsWare
@CommonsWare 非常感谢!这正是我一直在寻找的。 - Boris Strandjev
1
@androiddeveloper:“但是这个文件夹通常也有一个缩略图文件夹”--我不能确定“通常”,但DIRECTORY_DCIM可以有子目录,由用户或应用程序创建。“是否可能获取相机本身的文件夹?”--相机没有文件夹。相机应用程序可以将图像放在任何地方,无论是直接放在DIRECTORY_DCIM中,还是在DIRECTORY_DCIM的子目录中,或者完全在其他地方。而且,有很多很多相机应用程序。 - CommonsWare
我明白了。为什么缩略图文件夹没有“.nomedia”文件,这样它就不会被MediaStore扫描呢?以“.”开头的文件夹中存储的图像是否被忽略了? - android developer
显示剩余3条评论

5

我知道现在说这个有点晚了,但你可以这样做:

String CameraFolder="Camera";
File CameraDirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString());
File[] files = CameraDirectory.listFiles();
for (File CurFile : files) {
      if (CurFile.isDirectory()) {
                CameraDirectory=CurFile.getName();
                break;
      }
}
final String CompleteCameraFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString() + "/" + CameraFolder;

可选地,您可以在for循环内执行您的操作。


这种方式对我来说似乎不正确。例如,我的DCIM目录里有4个文件夹。 - Dielson Sales

2

关于此主题的其他信息。您需要添加一个访问外部存储的权限,否则listFiles()始终返回null。请将以下内容添加到您的AndroidManifest.xml中。

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.tomoima.filedirectory"
      xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application
    ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接