强制MediaRecorder使用内置麦克风

时间:2013-11-06 15:18:56

标签: android android-mediarecorder

我正在使用这样的东西来启动录音:

MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/dev/null");
recorder.prepare();
recorder.start();

我想始终从内置麦克风录音。使用上面的代码,一旦插入一个音频源,音频源就会切换到外部麦克风。我查看了文档,找不到设置首选麦克风的方法。

1 个答案:

答案 0 :(得分:2)

不幸的是,你正试图反对Android的音频管理,也就是说,系统根据选定的音频源选择输入设备,当插入耳机时,输入,用于MIC音频源,切换到耳机。您可以确认此检查logcat的AudioPolicyManager的相关消息。

我的建议是使用不同的音频源来欺骗系统。我建议使用CAMCORDER或至少尝试VOICE_RECOGNITION或VOICE_COMMUNICATION。

CAMCORDER的主要问题是它可以使用多媒体麦克风,也就是设备背面的麦克风。更详细的,我建议遵循以下程序:

  1. 倾听ACTION_HEADSET_PLUG意图。
  2. 收到意图后,请尝试将音频源切换为CAMCORDER。
  3. 根据有源相机选择CAMCORDER音频源,因此您可以尝试通过MediaREcorder的setCamera
  4. 强制使用前置摄像头(以及前置内置麦克风)

    希望这有帮助