但是我的应用程序无法通过麦克风在 Samsung 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 以及选择音频 channel 为 1 或 2。 我尝试了所有可用的组合。至少其中一种组合适用于许多手机。但它们都不能在三星 Galaxy S 2 中工作。它记录了文件,记录的持续时间是真实的,但声音只是沉默!
在我对这个问题的网络研究中,我发现它可能来自麦克风类型。虽然在我的代码中我选择了默认的音频源类型,麦克风,语音下行,语音上行,语音通话,但它无法工作。然后我将音频源类型设置为 0、1、2、3、4 而不是 MediaRecorder.AudioSource.MIC 等。但它也无法工作...
最佳答案
我在 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
关于android - 无法使用 Samsung Galaxy S2 进行录音,但可以通过麦克风使用其他手机进行录音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7822848/