我正在开发一款安卓相机应用。
其中一个要求是将拍摄的照片保存到设备的默认相机照片文件夹中,也就是 Android 原生相机存储照片的文件夹。
我该如何找出原生相机存储照片的位置呢?据我所知,这可能因制造商(三星、HTC、摩托罗拉、索尼等)和型号(Galaxy Tab、Galaxy S4 等)而异。
我正在开发一款安卓相机应用。
其中一个要求是将拍摄的照片保存到设备的默认相机照片文件夹中,也就是 Android 原生相机存储照片的文件夹。
我该如何找出原生相机存储照片的位置呢?据我所知,这可能因制造商(三星、HTC、摩托罗拉、索尼等)和型号(Galaxy Tab、Galaxy S4 等)而异。
使用getExternalStoragePublicDirectory()函数
并加上参数DIRECTORY_PICTURES
(或者,对于其他用例,可以使用类似的参数,例如DIRECTORY_MOVIES)
我知道现在说这个有点晚了,但你可以这样做:
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循环内执行您的操作。
关于此主题的其他信息。您需要添加一个访问外部存储的权限,否则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
...
DIRECTORY_DCIM
更匹配:“将设备挂载为相机时,图片和视频的传统存储位置”。话虽如此,“本机相机”可以按其意愿自行操作,你无法事先知道该相机存储图像的位置。 - CommonsWareDIRECTORY_DCIM
可以有子目录,由用户或应用程序创建。“是否可能获取相机本身的文件夹?”--相机没有文件夹。相机应用程序可以将图像放在任何地方,无论是直接放在DIRECTORY_DCIM
中,还是在DIRECTORY_DCIM
的子目录中,或者完全在其他地方。而且,有很多很多相机应用程序。 - CommonsWare