我的目标是暂停录制文件。 我在Android开发者网站上看到它但是Media Recorder没有暂停选项。
Java支持以编程方式合并两个音频文件,但在android中它不起作用。
我还使用了所有设备都可以使用的默认设备录音机应用程序,但在三星中,很少有设备没有恢复录制路径。
Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
startActivityForResult(intent,REQUESTCODE_RECORDING);
任何一个有暂停功能的录音帮助。
答案 0 :(得分:10)
http://developer.android.com/reference/android/media/MediaRecorder.html
MediaRecorder没有暂停和恢复方法。您需要使用停止和启动方法。
答案 1 :(得分:6)
如果仍有此问题,您可以参考我的回答here。对于API级别> = 24个暂停/恢复方法在Android MediaRecorder类中可用。
对于API级别< 24 强>
在您的gradle文件中添加以下依赖项:
compile 'com.googlecode.mp4parser:isoparser:1.0.2'
解决方案是在用户暂停时停止录制,并在恢复时再次启动,如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。
答案 2 :(得分:5)
我的一个项目中有这样的要求,我们所做的就像使用AudioRecord
创建一个用于在录制开始时保存记录数据的原始文件,每个简历我们将数据附加到同一个文件
像
FileOutputStream fos= new FileOutputStream(filename, true);
这里的文件名是原始文件的名称,并将新的记录数据附加到它。
当用户停止录制时,我们会将整个原始文件转换为.wav(或其他)格式。对不起,我无法发布整个代码。希望这会给你一个工作的方向。
答案 3 :(得分:1)
你不能使用Android API来做,但你可以保存很多mp4文件并使用mp4parser合并它:用Java编写的强大的库。另请参阅我的简单录音机“暂停”:https://github.com/lassana/continuous-audiorecorder。