Duplicar Possível:
Melhorar a qualidade da gravação de áudio no android?
Quero gravar áudio em um arquivo 3GP. Eu posso fazer isso sem nenhum problema e posso ouvir a voz. Mas a voz que ouço é muito lenta e não clara. Para aumentar a qualidade da voz, escrevi um programa, mas obtive 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();
}
o que está errado no meu código? obrigado.
Respostas:
1 para resposta № 1Conforme meu Resposta existente no Stackoverflow Forneci o código abaixo para melhorar sua qualidade de som.
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();
0 para resposta № 2
eu escrevi um programa, mas obter java.lang.RuntimeException: iniciar falhou
Você se certificou de, na primeira execução do seu aplicativo, que você ligou no onStop
recorder.stop();
recorder.reset();
recorder.release();
Tenho certeza que o gravador já está sendo usado quandovocê está tentando executar este programa. é por isso que você está recebendo esse erro. sempre certifique-se de chamar os métodos acima no onStop. O mesmo vale para a câmera também.