我正在使用MediaRecorder类开发录音应用程序。 我有以下要求:
1.按下暂停按钮后暂停录制。
2.按下恢复按钮后,继续录制暂停的位置。 我试试这个link
但我无法实现这项功能。
非常感谢任何帮助/建议。
答案 0 :(得分:4)
此链接对于需要暂停和录制音频的用户也很有用。
答案 1 :(得分:2)
Media Recorder类不支持暂停和恢复,请参阅第二个链接类概述 尝试使用停止并重新启动
How can i pause voice recording in Android?
http://developer.android.com/reference/android/media/MediaRecorder.html
答案 2 :(得分:1)
如果仍有此问题,您可以参考我的回答here。
解决方案是在用户暂停时停止录制,并在恢复时再次启动,如stackoverflow中的许多其他答案中已经提到的那样。存储在阵列中生成的所有音频/视频文件,并使用以下方法合并所有媒体文件。该示例取自mp4parser库,并根据我的需要进行了一些修改。
public static boolean mergeMediaFiles(boolean isAudio, String sourceFiles[], String targetFile) {
try {
String mediaKey = isAudio ? "soun" : "vide";
List<Movie> listMovies = new ArrayList<>();
for (String filename : sourceFiles) {
listMovies.add(MovieCreator.build(filename));
}
List<Track> listTracks = new LinkedList<>();
for (Movie movie : listMovies) {
for (Track track : movie.getTracks()) {
if (track.getHandler().equals(mediaKey)) {
listTracks.add(track);
}
}
}
Movie outputMovie = new Movie();
if (!listTracks.isEmpty()) {
outputMovie.addTrack(new AppendTrack(listTracks.toArray(new Track[listTracks.size()])));
}
Container container = new DefaultMp4Builder().build(outputMovie);
FileChannel fileChannel = new RandomAccessFile(String.format(targetFile), "rw").getChannel();
container.writeContainer(fileChannel);
fileChannel.close();
return true;
}
catch (IOException e) {
Log.e(LOG_TAG, "Error merging media files. exception: "+e.getMessage());
return false;
}
}
对于音频文件使用标志isAudio为true,对视频文件使用false。
答案 3 :(得分:0)
for pause the mediarecorder
my_rec.pause();
im_pouse.setImageResource(R.drawable.ic_play_arrow_black_24dp);
for resume the mediarecorder
my_rec.resume();
im_pouse.setImageResource(R.drawable.ic_pause_black_24dp);
希望它能起作用。