附加两个或多个.3gpp文件(不支持WAV)

时间:2018-12-25 16:34:57

标签: android android-mediarecorder pause

我从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();
            }
        }

0 个答案:

没有答案