3

但是我的应用程序无法通过麦克风在三星 Galaxy S 2 中录音,它一直在通过麦克风在其他手机中录音。

Recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

在我的代码中,我选择从 0 到 4 的源类型,选择编码器类型为 amr-nb、amr-wb、aac 或默认值,选择输出格式类型为 .3gp、.mp4 或 .amr 并选择音频通道作为 1 或 2。我尝试了所有的组合。至少其中一种组合适用于许多手机。但是它们都不能在三星Galaxy S 2上工作。它记录了文件,记录的持续时间是真实的,但声音只是沉默!

在我对这个问题的网络研究中,我发现它可能来自麦克风类型。虽然在我的代码中我选择了默认的音频源类型,麦克风,语音下行链路,语音上行链路,语音呼叫,但它无法正常工作。然后我将音频源类型设置为 0、1、2、3、4 而不是 MediaRecorder.AudioSource.MIC 等。但它也无法工作......

4

1 回答 1

1

我在 S2 上遇到过问题,应用程序会锁定麦克风并且不会释放它,特别是如果您正在进行快速开发周期,在卸载应用程序时锁定和释放麦克风(并重新安装新版本)。有时它会在一段时间后解锁,但确保麦克风可用的可靠方法是在尝试失败后重新启动手机。

我已经能够使用AudioRecord对象中的以下设置录制音频:

int buffer_size = 2 * AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
recorder = new AudioRecord(
  MediaRecorder.AudioSource.MIC,               //audio source
  16000,                                       //16kHz sample rate
  AudioFormat.CHANNEL_IN_MONO,                 //channel
  AudioFormat.ENCODING_PCM_16BIT,              //encoding
  buffer_size );                               //buffer size
于 2011-10-19T16:11:41.817 回答