【问题标题】:Forcing MediaRecorder to use internal microphone强制 MediaRecorder 使用内部麦克风
【发布时间】:2013-11-17 21:54:03
【问题描述】:

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

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();

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

【问题讨论】:

  • 您尝试过 MediaRecorder.AudioSource.CAMCORDER 吗?

标签: android android-mediarecorder


【解决方案1】:

不幸的是,您试图违反Android的音频管理,即系统根据所选音频源选择输入设备,当插入耳机时,输入,用于MIC音频源,切换到耳机.您可以通过查看 logcat 的 AudioPolicyManager 的相关消息来确认。

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

CAMCORDER 的主要问题是它可以使用多媒体麦克风,即设备背面的那个。更详细地说,我建议以下程序:

  1. 收听ACTION_HEADSET_PLUG Intent。
  2. 收到 Intent 后,尝试将音频源切换到 CAMCORDER。
  3. CAMCORDER 音频源的选择取决于活动摄像头,因此您可以尝试通过 MediaRECorder 的setCamera 强制使用前置摄像头(然后是前置内置麦克风)

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    相关资源
    最近更新 更多