存储访问框架中 MediaRecorder 中的 SetOutputFile

SetOutputFile in MediaRecorder in Storage Access Framework

我想在 Android 上将存储访问框架 (SAF) 与 MediaRecorder 一起使用。但是在 SAF 方案下,您不应该依赖绝对路径,而应该依赖您之前获取权限的 Uri。

什么是好的工作方式,如何使用 MediaRecorder 与 Android 的 SAF 的新方法一致? 比方说,作为(有据可查的)起点,您从这里开始:

List<UriPermission> permission=  getContentResolver().getPersistedUriPermissions();

而您想到达那里:

mMediaRecorder.setOutputFile(/*Some arguments*/);
mMediaRecorder.prepare();

中间步骤是什么?

欢迎您在 ContentResolver 上尝试 openFileDescriptor(),以获得 FileDescriptorUri 标识的内容。然后,将其传递给 MediaRecorder 上的 setOutputFile() 版本,该版本采用 FileDescriptor。这将如何运作在很大程度上取决于您正在录制的内容以及文档提供者是否支持搜索(这几乎归结为此 Uri 是否由常规文件支持)。