我正在创建一个通过 Android MediaMuxer 进行录制的文件,并且我想将此文件存储在可移动 SD 卡中指定的任何文件夹中(不仅在 /Android/data/data/application 中)。
如果Android API级别高于26,我可以使用SAF(存储访问框架)来实现它。
var fd: FileDesciptor? = null
for (permission in activity.contentResolver.persistedUriPermissions) {
if (permission.uri.path == "path/to/file") {
val docFile = DocumentFile.fromTreeUri(activity, permission.uri)!!.
createFile("video/mp4", "test.mp4")
fd = activity.contentResolver.
openFileDescriptor(docFile!!.uri, "w")!!.
fileDesciptor
break
}
}
val muxer = MediaMuxer(fd, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4)
Run Code Online (Sandbox Code Playgroud)
但是文件描述符版本构造函数
var fd: FileDesciptor? = null
for (permission in activity.contentResolver.persistedUriPermissions) {
if (permission.uri.path == "path/to/file") {
val docFile = DocumentFile.fromTreeUri(activity, permission.uri)!!.
createFile("video/mp4", "test.mp4")
fd = activity.contentResolver.
openFileDescriptor(docFile!!.uri, "w")!!.
fileDesciptor
break
}
}
val muxer …Run Code Online (Sandbox Code Playgroud)