【发布时间】:2019-12-21 02:27:42
【问题描述】:
我正在创建一个要通过 Android MediaMuxer 录制的文件,并且我想将此文件存储在我在可移动 SD 卡中指定的任何文件夹中(不仅在 /Android/data/data/application 中)。
如果Android API级别在26以上,我可以使用SAF(Storage Access Framework)来实现。
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 级别
只有文件路径版本
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 卡中指定的任何文件夹中录制文件?
【问题讨论】:
标签: java android kotlin android-sdcard