更改 Android 音频录制默认输入源

问题描述 投票:0回答:2

我目前正在编写一个需要录制和实时处理音频数据的应用程序。为此,我使用 AudioRecord 类。这一切都很好,除了我的主要测试设备 Galaxy Nexus 上录制音频的默认设置是从后置扬声器录制。我假设大多数手机的默认录音源是背面或底部麦克风,因为当您使用手机通话时,您的嘴位于底部附近。

但是,我的应用程序要求我从手机正面的扬声器进行录音,因此我希望有人可以帮助我如何以编程方式更改 AudioRecord 输入源。我已经广泛搜索了这个问题的答案。

我考虑过的一些事情是:

  • 使用AudioManager类并打开免提电话,如:

    AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    am.setSpeakerphoneOn(true);

  • 更改 AudioRecord 对象构造中的 AudioSource 参数:

    AudioRecord ar = new AudioRecord(AudioSource.??????, ..., ..., ..., ...);

  • 我发现API对于哪些AudioSource格式不是太具体,所以我想知道是否有其他人遇到过这个问题并可以为我指出正确的方向。

    提前致谢,

    android audiorecord android-audiomanager speaker speakerphone
    2个回答
    0
    投票

    Android目前不支持通话录音,所以我相信你无法将其更改为从耳机录音。然而,您实际上并不需要这样做,手机底部的麦克风应该能够以您需要的全部容量录制内容。要将 AudioRecord 设置为麦克风,只需执行以下操作:

    AudioRecord ar = new AudioRecord(AudioSource.MIC, ..., ..., ..., ...);
    

    这将为您提供最佳的录音质量。


    0
    投票

    首先使用 :

    列出可用的输入源
    val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
    val devices = audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)
    

    然后使用 :

    设置输入设备
    audioRecord.setPreferredDevice(devices[index])
    
    © www.soinside.com 2019 - 2024. All rights reserved.