android:在emulator上使用MediaPlayer录制音频
我正在尝试使用以下代码在Android emulator上录制麦克风中的音频:android:在emulator上使用MediaPlayer录制音频,android,android-emulator,audio-recording,mediarecorder,Android,Android Emulator,Audio Recording,Mediarecorder,我正在尝试使用以下代码在Android emulator上录制麦克风中的音频: recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(Environment.getExternalStorageDirectory() + "/test/test.3gp");
try {
recorder.prepare();
}
catch (IOException io) {
Log.v(LOG_TAG, "Could not prepare the audio " + io.getMessage());
}
recorder.start();
停止音频的代码如下:
recorder.stop();
recorder.reset();
recorder.release();
录制过程工作正常,但产生的音频失真。当我录制一段持续60秒的音频并播放它时,它的持续时间显示为120秒。测量不精确,但这只是给你一个想法
只有AMR_NB编码器在我的模拟器上工作。我尝试过不同的输出格式,但结果总是一样的
这是模拟器的限制还是我在这里做错了什么
编辑1:
我也尝试过AudioRecord类,结果也是一样的
谢谢。我一直在为同样的问题工作,并找到了解决方案,请尝试使用以下代码:
private void startRecording()
{
this.recorder = new MediaRecorder();
this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
this.recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
MediaRecorder.getAudioSourceMax();
this.recorder.setOutputFile(this.getFilename());
this.recorder.setOnErrorListener(this.errorListener);
this.recorder.setOnInfoListener(this.infoListener);
try
{
this.recorder.prepare();
this.recorder.start();
} catch (final IllegalStateException e)
{
e.printStackTrace();
} catch (final IOException e)
{
e.printStackTrace();
}
}
这很有效。希望它能帮助你:)谢谢你的发帖;不过我运气不好。我已经添加了“MediaRecorder.getAudioSourceMax();”行,但是音频仍然会拖拽。仅供参考,我正在用Android 4.0.3、API级别15、mac上的ARM模拟器来尝试这一点。