gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:57:47 26 4
gpt4 key购买 nike

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

如果 API 级别 < 26,则不可用。

只有文件路径版本

public MediaMuxer(@NonNull String path, @Format int format) throws IOException 

我可以用。

但是在获得新加坡武装部队许可的情况下,我无法获得真正的路径。
docFile.uri.path // this gives me a path with strange prefix.

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

最佳答案

我和你有同样的问题,没有任何帮助。但可能有一些解决方法。

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

关于java - 如果 Android API 级别低于 26,如何将存储访问框架与 MediaMuxer 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57496246/

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