如何在Android中强制使用外接麦克风和手机扬声器?

时间:2014-12-15 11:48:25

标签: android android-audiomanager

所以我有一个代码,它从麦克风接收输入,同时使用AudioRecorderAudioTrack类通过扬声器播放。

代码完美无缺,但我想做的是插入耳机,使用外置麦克风作为输入,使用手机扬声器作为输出。

我已经尝试了AudioManager课程,但我似乎无法按预期工作。

默认情况下,当插入耳机时,外接麦克风用作输入,声音通过耳机发出......但是使用以下代码片段:

audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);

输入切换到手机麦克风,扬声器也切换到手机扬声器。

我想继续使用手机扬声器,但仍然使用外置麦克风。这可能吗?

我正在编译API级别19(KitKat),我已经有了

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

在我的清单中。此外,AudioRecorder来源设置为MediaRecorder.AudioSource.MIC

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。在尝试了不同的组合后,我找到了从外部麦克风录制并使用手机扬声器播放的方法。以下是适用于API级别25和华硕Zenfone 3 ZE520KL(Android 6.0.1)的代码:

mAudioInput = new AudioRecord(MediaRecorder.AudioSource.MIC, mSampleRate, AudioFormat.CHANNEL_IN_MONO, mFormat, mInBufferSize);
mAudioOutput = new AudioTrack(AudioManager.STREAM_MUSIC, mSampleRate, AudioFormat.CHANNEL_OUT_MONO, mFormat, mOutBufferSize, AudioTrack.MODE_STREAM);
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
mAudioManager.setSpeakerphoneOn(true);
编辑:它不适用于三星Galaxy Grand Prime(SM-G531Y)