目录
申请权限:
XML
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:requestLegacyExternalStorage="true"
sdcard路径替代:
/storage/emulated/0
相当于 /sdcard,二者指向目录相同
视频目录
Environment.DIRECTORY_MOVIES
是 Android 系统为了帮助组织媒体文件而设立的一种标准目录类型。当你调用 getExternalFilesDir(Environment.DIRECTORY_MOVIES)
方法时,系统会返回一个指向应用专用的,用于存储电影和其他类似媒体文件的文件夹的 File
对象。
写文件示例:
java
String path = "/storage/emulated/0/Android/data/com.codec.cameraframetest/files/DCIM/" + log_file ;
File dir = new File(Environment.getExternalStorageDirectory(), "aaaa");
if (!dir.exists()) {
dir.mkdir();
}
// 在 'aaa' 目录下创建 'log.txt' 文件
File logFile = new File(path);
if (!logFile.exists()) {
logFile.createNewFile();
}
FileOutputStream fileOutputStream = new FileOutputStream(logFile, true);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
outputStreamWriter.write(index+" test\n");
outputStreamWriter.flush();
outputStreamWriter.close();
如果保存在其他目录,会检索加入图库,生成缩略图导致保存视频慢吗
如果你将视频文件保存在其他目录,特别是在公共目录(如 Environment.DIRECTORY_DCIM
或 Environment.DIRECTORY_PICTURES
),那么这些文件可能会被媒体扫描器扫描并添加到设备的媒体库中。这可能会导致生成缩略图和其他元数据,这可能会消耗一些时间和系统资源。
然而,这种影响通常不会导致保存视频文件明显变慢。媒体扫描器通常在文件被写入磁盘后异步运行,不会阻塞写入操作。然而,如果你的应用连续写入大量的视频文件,那么媒体扫描器可能会消耗大量的CPU和I/O资源,这可能会影响设备的总体性能。
如果你不希望你的视频文件被添加到媒体库,或者你希望避免媒体扫描器的开销,你可以考虑在你的视频文件名后面添加".nomedia"后缀,或者在你的目录中创建一个名为".nomedia"的文件。这将告诉媒体扫描器忽略这个文件或目录。
请注意,从Android 10(API级别29)开始,应用默认无法直接访问设备的整个外部存储空间。如果你的应用需要将文件保存在公共目录,你可能需要使用存储访问框架(Storage Access Framework)或者媒体存储API。