2

可能重复:
提高android中的录音质量?

我想将音频录制到 3gp 文件中。我可以毫无问题地做到这一点,并且可以听到声音。但是我能听到的声音很慢而且不清楚。为了提高语音质量,我编写了一个程序但得到 java.lang.RuntimeException: start failed

public void onClick(View arg0) 
        {
            root=Environment.getExternalStorageDirectory();
            audiofile=new File(root,"sound.3gp");
            if(!audiofile.exists())
            {
                Log.w(TAG, "File doesn't exists");
                try 
                {
                    audiofile.createNewFile();

                } catch (IOException e) 
                {
                    Log.w(TAG, "Unable to create audio file",e);
                }                   
            }

            recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);           
            recorder.setOutputFile(audiofile.getAbsolutePath());

            try 
            {
                recorder.setAudioSamplingRate(10);
                recorder.setAudioEncodingBitRate(20);
                recorder.prepare();

            } catch (IllegalStateException e) 
            {
                Log.w(TAG, "This is IllegalStateException");
            } catch (IOException e) 
            {
                Log.w(TAG, "This is IoException");
            }
            recorder.start();
        }

我的代码有什么问题?谢谢。

4

2 回答 2

1

根据我在 Stackoverflow 上的现有答案,我为您提供了以下代码来提高您的音质。

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioEncoder(MediaRecorder.getAudioSourceMax());
recorder.setAudioEncodingBitRate(16);
recorder.setAudioSamplingRate(44100);
recorder.setOutputFile(path);
recorder.prepare();
recorder.start();
于 2012-06-11T14:08:33.680 回答
0

我写了一个程序但得到 java.lang.RuntimeException: start failed

您是否确保在第一次运行您调用 onStop 的应用程序时

recorder.stop();
recorder.reset();
recorder.release();

我很确定当您尝试运行此程序时已经使用了记录器。这就是您收到此错误的原因。始终确保您在 onStop 中调用上述方法。Camera 也是如此。

于 2012-06-11T14:12:38.350 回答