android:获取媒体文件夹(视频)

时间:2015-11-18 16:04:48

标签: android

Android上是否有API调用以获取Camera应用程序存储录制视频的文件夹的路径?我目前正在使用此代码片段,但想知道是否有合适(更干净)的方式来执行此操作?

// check file path exists!
        File f = new File(Environment.getExternalStorageDirectory() + "/Videos");
        if (!f.isDirectory()) {
            f = new File(Environment.getExternalStorageDirectory() + "/DCIM");
            if (!f.isDirectory()) {
                f = new File(Environment.getExternalStorageDirectory() + "/");
            }
        }
        String path = f.getAbsolutePath().toString();

编辑:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)

返回

/storage/emulated/0/DCIM

但是,

| => adb shell
shell@d2can:/ $ cd /storage/emulated
shell@d2can:/storage/emulated $ ls
legacy
shell@d2can:/storage/emulated $ cd 0
/system/bin/sh: cd: /storage/emulated/0: No such file or directory
2|shell@d2can:/storage/emulated $ 

奇怪的是,如果我真的继续尝试在那个不存在的位置(从Android应用程序内部)创建文件,它们确实会在/sdcard/DCIM中创建!然而,当使用调试器检查app变量时,它们具有如上所示的路径 - 无效的路径。

1 个答案:

答案 0 :(得分:1)

  

Android上是否有API调用以获取Camera应用程序存储录制视频的文件夹的路径?

没有一个“相机应用”。有数以千计的Android设备型号。这些设备型号预先安装了数十个(如果不是数百个)相机应用程序。用户可以从Play商店或其他地方下载数百种(如果不是数千种)其他相机应用程序。

无需在任何特定位置保存录制的视频,更不用说通过Java文件I / O可以获得的位置。

  

我目前正在使用这个代码片段,但是想知道是否有适当的(更干净的)方法来执行此操作?

您可以获取设备建议将文件存储在外部存储via Environment.getExternalStoragePublicDirectory()上的位置。具体来说,DIRECTORY_DCIM被描述为“将设备作为相机安装时的图片和视频的传统位置”。

然而:

  • 相机应用不需要使用此目录

  • 注意DIRECTORY_DCIM的相机应用经常会创建特定于应用的子目录