我从android中的mediaRecorder获取音频文件列表。在记录应用程序时,用户可以暂停记录。我的应用程序的目标API级别是19,所以我不能仅使用pause()
的方法stop()
。那里我得到文件列表(多少用户按下停止,我得到多少文件)。并且当用户startPlaying时,他仅听到列表中的第一个文件。我尝试将所有文件合并(追加)到一个文件中,然后使用以下代码播放。我可以向谁追加文件以收听所有文件?
附言:我无法使用AudioRecorder。而且我尝试了SequenceInputStream(相同的问题)。
public void playStart(View v) {
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
if (files!=null&&files.size()!=0){
for (File file:files){
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[1024];
while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}
buffer.flush();
byte[] byteArray = buffer.toByteArray();
out.write(byteArray);
Log.i("LENGTH", String.valueOf(byteArray.length));
}
byte[] arr_combined = out.toByteArray();
Log.i("LENGTH_TOTAL", String.valueOf(arr_combined.length));
File generalFile = new File(Environment.getExternalStorageDirectory() + File
.separator+
"general.3gpp");
FileOutputStream fileOutputStream = new FileOutputStream(generalFile, false);
fileOutputStream.write(arr_combined);
fileOutputStream.close();
releasePlayer();
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(generalFile.getPath());
mediaPlayer.prepare();
mediaPlayer.start();
}
else Toast.makeText(this, "files saving error", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}