所以我有一个代码,它从麦克风接收输入,同时使用AudioRecorder
和AudioTrack
类通过扬声器播放。
代码完美无缺,但我想做的是插入耳机,使用外置麦克风作为输入,使用手机扬声器作为输出。
我已经尝试了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
答案 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)