然而,我的应用无法从麦克风录制三星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等将音频源类型设置为硬。但它也无法工作......
答案 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