Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果Android API级别低于26,如何将Storage Access Framework与MediaMuxer配合使用_Java_Android_Kotlin_Android Sdcard - Fatal编程技术网

Java 如果Android API级别低于26,如何将Storage Access Framework与MediaMuxer配合使用

Java 如果Android API级别低于26,如何将Storage Access Framework与MediaMuxer配合使用,java,android,kotlin,android-sdcard,Java,Android,Kotlin,Android Sdcard,我正在通过Android MediaMuxer创建一个要录制的文件,我想将该文件存储在可移动SD卡中指定的任何文件夹中(而不仅仅是在/Android/data/data/application中) 如果Android API级别高于26,我可以使用SAF(存储访问框架)来实现它 var fd: FileDesciptor? = null for (permission in activity.contentResolver.persistedUriPermissions) { if (

我正在通过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)
但是文件描述符版本构造函数

public MediaMuxer(@NonNull FileDescriptor fd,@Format int Format)引发IOException
如果API级别<26,则不可用

只有文件路径版本

public MediaMuxer(@NonNull String path,@Format int Format)引发IOException
我可以用

但我不能得到SAF的许可才能得到真正的路径

docFile.uri.path // this gives me a path with strange prefix.

那么,如果Android API级别低于26,有没有办法通过MediaMuxer将文件记录到我在可移动SD卡中指定的任何文件夹中?

我与您有相同的问题,没有任何帮助。但可能有一些解决方法

您可以将文件记录到内部存储器中,当记录结束时,您可以使用SAF将记录文件复制到可移动SD中