Добавьте два или более файлов .3gpp (НЕ WAV) - PullRequest
0 голосов
/ 25 декабря 2018

Я получаю список аудиофайлов из 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();
            }
        }
...