gpt4 book ai didi

android - 在 Android 5 中将视频文件存储在 SD 卡上

转载 作者:行者123 更新时间:2023-11-29 20:06:36 25 4
gpt4 key购买 nike

我在 android.media.MediaRecorder 类的帮助下录制视频,它接受输出文件的路径字符串 ( MediaRecorder.setOutputFile(String) ),尽管该方法的一个版本接受 文件描述符

我需要存储巨大的视频文件,所以我想使用 SD 卡。为了获取相关目录的路径,我使用了 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)。事实证明,生成的路径用于“模拟”存储(/sdcard/...)而不是真正的 SD 卡(/sdcard1/ 在我的 Xperia Z3 Compact,Android 5.1 上.1).

我尝试对 /sdcard1/(以及 /storage/sdcard1)进行硬编码,但得到一个关于权限拒绝的 IOException。当然,我有

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我听说 4.4(又名存储访问框架)之后对 SD 卡的访问发生了巨大变化,但找不到足够简单明了的解释来说明如何在这种情况下完成工作。对此的简短解决方案有帮助吗?

具有硬编码路径的 PS 解决方案对我来说是可以的,因为我将只在我的手机上使用这个应用程序。

最佳答案

此代码应该可以解决您的问题:

 public String createVideoFilePath() {
String time = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File[] pathsArray = getExternalFilesDirs(Environment.DIRECTORY_DCIM);

/通常,pathArray[1] 包含路径可移动 SD 上的必要文件夹卡片。所以我们通常可以只使用 pathArray[1] 而不是用 for 语句在 pathArray 中搜索必要的文件/

        for (File f : pathsArray) {
if ((f != null) && (Environment.isExternalStorageRemovable(f))) {
return f.getPath() + File.separator +"video_"+ time + ".mp4";
}
}

return pathsArray[0].getPath() + File.separator +"video_"+ time + ".mp4";

}

如果可移动 SD 不存在,此方法返回文件在可移动 SD 卡或模拟存储中的位置

只需将此方法用作 MediaRecorder.setOutputFile(String) 的参数更新:非常重要的一点是,所有位于文件夹中的文件都是通过 Context 获取的。 getExternalFilesDirs(String typr) 将在卸载您的应用后删除。

关于android - 在 Android 5 中将视频文件存储在 SD 卡上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35573839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com