跳到主要内容

麦克风

禁用麦克风

SDK 封装了麦克风输出音频流对象 RCRTCMicOutputStream,App 可在获取此对象后通过 setMicrophoneDisable 方法禁用麦克风设备采集。默认处于打开状态。

App 无法自行创建 RCRTCMicOutputStream 对象。请通过 RCRTCEngine.getInstance().getDefaultAudioStream() 获取该对象后进行设置。只能在 IM 连接成功并调用 RCRTCEngine.init 方法之后调用,否则会返回空指针。

// 设置禁用麦克风采集
RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(true);

关于如何设置麦克风采集音量,请参考音频管理下的「音量」文档。

开启耳返

耳返是指播放采集设备输出音频的过程。

关于原厂耳返功能

使用厂商自带的耳返功能(推荐)可实现较低延迟。SDK 支持在以下厂商设备上使用原厂耳返功能。

  • 华为:注意,如果需要在华为设备上使用华为自带的耳返功能,需要导入华为 Audio Kit。请查考以下方式引入华为仓库和华为开发包。最新的华为开发包版本请参考华为官方开发文档

    maven {url 'https://developer.huawei.com/repo/'}
    implementation group: 'com.huawei.multimedia', name: 'audiokit', version: '1.0.3', ext: 'aar'
  • vivo:暂仅在 SDK < 5.3.2 的版本上支持 vivo 原厂耳返。

启用耳返功能(>= 5.1.9)

如果 SDK 版本大于等于 5.1.9,可在加入房间后只需调用 enableEarMonitoring 即可打开或关闭耳返功能。

App 需要调用 RCRTCEngine 下的 getDefaultAudioStream 方法,获取 RCRTCMicOutputStream 对象后进行设置。如设备上支持使用原厂耳返功能,则该方法会启用原厂耳返功能。

// 启用耳返功能
RCRTCEngine.getInstance().getDefaultAudioStream().enableEarMonitoring(true);

关于如何设置耳返音量,请参考音频管理下的「音量」文档。

启用耳返功能(< 5.1.9)

提示
  1. 开启耳返功能的前置条件是在初始化 RCRTCEngine 配置时开启低延迟录音功能(enableLowLatencyRecording)。
  2. SDK 针对华为和 vivo 设备适配了厂家的低延迟耳返,针对这两种设备需要使用 MIC 作为音源采集声音。
  • 华为、vivo 手机

    早于 5.1.9 版本的 SDK,如果想使用厂商自带耳返功能,必须在 RCRTCEngine.getInstance().init 前开启前置条件。代码如下:

    // 使用耳返功能,华为和 vivo 需使用 mic 采集声音
    if (manufacturer.contains("HUAWEI") || manufacturer.contains("vivo")) {
    audioSource = MediaRecorder.AudioSource.MIC;
    }

    RCRTCConfig config = RCRTCConfig.Builder.create()
    .setAudioSource(audioSource)
    .build();

    RCRTCEngine.getInstance().init(getApplicationContext(), config);

    // 打开或关闭耳返功能
    RCRTCEngine.getInstance().getDefaultAudioStream().enableEarMonitoring(true);
  • 其他厂商(非华为、vivo)手机

    早于 5.1.9 版本的 SDK,如果想使用耳返功能,必须在 RCRTCEngine.getInstance().init 前开启前置条件。代码如下:

    RCRTCConfig config = RCRTCConfig.Builder.create()
    .enableLowLatencyRecording(true) // 使用耳返功能需打开此配置
    .setAudioSource(audioSource)
    .build();

    RCRTCEngine.getInstance().init(getApplicationContext(), config);

    // 打开或关闭耳返功能
    RCRTCEngine.getInstance().getDefaultAudioStream().enableEarMonitoring(true);