Я получаю список аудиофайлов из mediaRecorder в Android.Во время записи приложения пользователь может приостановить запись.Уровень целевого API моего приложения - 19, поэтому я не могу использовать метод pause()
только stop()
.Там я получаю список файлов (сколько пользователь нажимает стоп, столько файлов я получаю).А когда пользователь запускает проигрывание, он слышит только первый файл из списка.Я пытаюсь объединить (добавить) все файлы в один и воспроизвести его с кодом ниже.Кому я могу добавить файлы, чтобы услышать их все?
PS: Я не могу использовать 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();
}
}