小编Ahg*_*ubu的帖子

如果 Android API 级别低于 26,如何将存储访问框架与 MediaMuxer 一起使用

我正在创建一个通过 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)

java android android-sdcard kotlin

7
推荐指数
1
解决办法
440
查看次数

标签 统计

android ×1

android-sdcard ×1

java ×1

kotlin ×1