无法用三星Galaxy S2录制,但可以用麦克风的其他手机录制

时间:2011-10-19 14:27:21

标签: android record galaxy mediarecorder

然而,我的应用无法从麦克风录制三星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或default,选择输出格式类型为.3gp,.mp4或.amr以及选择音频通道为1或2。 我尝试了所有组合。至少有一种组合适用于许多手机。但是没有一个可以在三星Galaxy S 2中工作。它记录了文件,记录的持续时间是真的,但声音只是沉默!

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

1 个答案:

答案 0 :(得分: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