我想将音频录制到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();
}
我的代码有什么问题?感谢。
答案 0 :(得分:1)
根据我的Existing Answer on 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();
答案 1 :(得分:0)
我写了一个程序,但得到java.lang.RuntimeException:start failed
您是否在第一次运行您在onStop上调用的应用程序时确定了
recorder.stop();
recorder.reset();
recorder.release();
我很确定当你试图运行这个程序时,记录器已经被使用了。这就是为什么你得到这个错误。总是确保你在onStop上调用上面的方法。对于Camera也是如此。