【问题标题】:How to force external microphone and phone speakers in Android?如何在 Android 中强制使用外部麦克风和手机扬声器?
【发布时间】:2014-12-15 11:48:25
【问题描述】:

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

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

我已经尝试过AudioManager 类,但我似乎无法让它按预期工作。

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

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

【问题讨论】:

    标签: android android-audiomanager


    【解决方案1】:

    我遇到了同样的问题。在尝试了不同的组合后,我找到了从外部麦克风录制并使用手机扬声器播放的方法。这是适用于 API 级别 25 和 Asus 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)

    【讨论】:

      猜你喜欢
      • 2021-10-18
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多