麦克风
禁用麦克风
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)
- 开启耳返功能的前置条件是在初始化 RCRTCEngine 配置时开启低延迟录音功能(
enableLowLatencyRecording
)。 - 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);