我在奥利奥之前使用MediaRecorder API。我面临的问题是,如果录制持续1或2小时,则会在一个连续的大文件上进行录制。
由于Oreo(API级别26)MediaRecorder API引入了setNextOutputFile(),这对于记录多个文件而不会丢失数据非常有用。这些文件可以配置为小尺寸,这样在处理时它们不会占用大量的应用程序内存。
我的计划是以下列方式使用它们:
File current;
File nextFile;
// Code to initialize/create these file instances
.
.
.
// Code to initialize/create MediaRecorder insatance which will be in try catch
mRecorder.setOutputFile(currentFileName);
mRecorder.prepare();
mRecorder.setNextOutputFile(nextFile);
.
.
mRecorder.start();
.
.
mRecorder.setOnInfoListener(new MediaRecorder.OnInfoListener() {
@Override
public void onInfo(MediaRecorder mr, int infoCode, int extra) {
Log.e(TAG, "Media recorder info : " + infoCode);
if (infoCode == MediaRecorder.MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED) {
String path = getNewUniquePath();
File nextFile = new File(path);
mRecorder.setNextOutputFile(nextFile);
}
}
});
.
.
.
// End of code
这种方法将继续提供固定小尺寸的下一个文件,这样即使录制超过1或2小时,我们也会有小尺寸的文件列表而不会丢失数据。
现在这里的主要问题是Oreo中没有以前的API版本。
以前的Android版本有没有其他选择? 在这种情况下,支持库会有所帮助吗?