Не удается воспроизвести записанный аудиофайл

Я записываю голос, используя один учебник, и для записи я использую класс AudioRecord, так как я хочу показать индикатор выполнения с некоторым уровнем шума. Я предоставляю файл, в котором будут храниться аудиоданные. Размер файла увеличивается по мере получения аудиоданных. Но когда я вручную воспроизвожу этот записанный файл, но он ничего не воспроизводит. Может ли кто-нибудь сказать мне, что мне не хватает?

private class RecordAudio extends AsyncTask<Void, Void, Void> {

        boolean alertshown = false;
        boolean smsdone = false;
        boolean calldone = false;
        int blocksize = 256;
        @Override
        protected Void doInBackground(Void... params) {
            //isRecording = true;
            try {
                BufferedOutputStream dos = new BufferedOutputStream(new FileOutputStream(babyNoiseFile));
                DataOutputStream dosTemp = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(babyNoiseTempFile)));


                int bufferSize = AudioRecord.getMinBufferSize(frequency,channelConfiguration, audioEncoding);
                AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency,channelConfiguration, audioEncoding, bufferSize);

                short[] buffer = new short[bufferSize];
                audioRecord.startRecording();

                while (isMonitoringStarted) {
                    int bufferReadResult = audioRecord.read(buffer, 0,bufferSize);

                    //for (int i = 0; i < buffer.length; i++) {
                    for (int i = 0; i < bufferReadResult; i++) {

                        prgrssbarNoiseStatus.setProgress(buffer[i]);
                        lastlevel = buffer[i];
                        //txtvwProgress.setText(""+lastlevel);
                        //System.out.println(lastlevel);
                        if (lastlevel > lowSensitivityLevel && lastlevel < mediumSensitivityLevel){
                            dos.write(buffer[i]);
                            publishProgress();
                            break;
                        } 
                        if (lastlevel > mediumSensitivityLevel && lastlevel < highSensitivityLevel) {
                            dos.write(buffer[i]);
                            publishProgress();
                            break;
                        }
                        if (lastlevel > highSensitivityLevel) {
                            dos.write(buffer[i]);
                            publishProgress();
                            break;
                        }

                    }
                    for (int i = 0; i < bufferReadResult; i++) {
                        dosTemp.writeShort(buffer[i]);

                    }
                    //publishProgress(new Integer(r));
                }
                audioRecord.stop();
                if (isMonitoringStarted) {

                }
                dos.close();
                dosTemp.close();
            } catch (Throwable t) {
                t.getStackTrace();
                t.printStackTrace();
                Log.e("AudioRecord", "Recording Failed");
            }
            return null;
        }

        protected void onProgressUpdate(Void... progress) {

            if (lastlevel > lowSensitivityLevel && lastlevel < mediumSensitivityLevel) {
                //islowFired = false;
                System.out.println("low");
                if (!islowFired) {
                    islowFired = true;
                    lowTimer = new LowActionTimer(2000, 1000);
                    lowTimer.start();
                }

                //Toast.makeText(HomeActivity.this, "Call will fire!!", Toast.LENGTH_SHORT).show();
            }
            if (lastlevel > mediumSensitivityLevel && lastlevel < highSensitivityLevel) {
                //if (islowFired) {
                lowTimer.cancel();
                mediumTimer = new MediumActionTimer(2000, 1000);
                mediumTimer.start();
                //}
                //Toast.makeText(HomeActivity.this, "email will fire!!", Toast.LENGTH_SHORT).show();
                System.out.println("medium");
            }
            if (lastlevel > highSensitivityLevel) {
                //Toast.makeText(HomeActivity.this, "notification will fire!!", Toast.LENGTH_SHORT).show();
                System.out.println("call will fire!!");
            }
}
        protected void onPostExecute(Void result) {

        }
    }

Заранее спасибо.


person Saurabh    schedule 20.02.2013    source источник
comment
Как ты пытаешься в это играть? Большинство автономных проигрывателей не будут воспроизводить чистые данные PCM, как это и есть. Вам нужно добавить к нему какой-то заголовок WAV или преобразовать его в другой формат.   -  person Geobits    schedule 20.02.2013
comment
открыв файл с SD-карты. Можете ли вы дать мне подсказку, как преобразовать его в другой формат для хранения этого записанного файла?   -  person Saurabh    schedule 20.02.2013
comment
Если вы хотите WAV (большой размер файла), вы можете просто добавить к нему стандартный заголовок. Для чего-либо еще (MP3, OGG и т. д.) вы можете поискать в Google стороннюю библиотеку, которая сделает эту работу за вас.   -  person Geobits    schedule 20.02.2013
comment
не могли бы вы уточнить это подробнее? где я должен добавить стандартный заголовок?   -  person Saurabh    schedule 20.02.2013
comment
Нет, но этот парень может.   -  person Geobits    schedule 20.02.2013