You need to enable JavaScript to run this app.
导航

移动端设置音频路由

最近更新时间2023.12.20 18:12:05

首次发布时间2022.08.26 17:16:47

功能变更日志

  1. 自客户端 SDK v3.38,支持本功能。
  2. 自客户端 SDK v3.42,功能优化。setDefaultAudioRoute 选择设备的听筒或扬声器作为默认音频路由。setAudioRoute 支持更多音频设备类型,例如有线耳机、蓝牙耳机等,但只支持在 AUDIO_SCENARIO_COMMUNICATION 通话场景下调用生效。
  3. 自客户端 SDK v3.50,功能优化。建议使用 setDefaultAudioRoute 设定默认的音频路由设备。

功能简介

本文以安卓端接口名称为例。

音频路由指的是安装在设备上的 App 用于播放音频的设备。主要有以下两种:

  • 内置播放设备。一般包括扬声器或听筒。立体声扬声器位于手机底部,声音比较大,可以实现“免提”的功能。听筒位于手机顶部,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。
  • 外接设备。包括有线耳机、蓝牙耳机等。

切换默认音频路由和接入外接设备时的路由切换行为

RTC SDK 内置了默认音频路由判定和切换策略。策略如下:

  • 没有外接设备时,系统将选取默认音频路由作为播放设备。默认音频路由(扬声器/听筒)可以通过调用 setDefaultAudioRoute 进行指定。
  • 当接入第一个外接设备时,RTC SDK 默认将播放设备更新为此设备。当接入多个外接设备时,RTC SDK 默认通过最后一个接入的设备播放。你可以通过 onAudioRouteChangedgetAudioRoute 获取变化后的音频路由设备。
  • 当外界音频路由设备断开时,SDK 将按照设备接入顺序,选取最后接入的外接设备作为音频路由;当断开最后一个外接设备时,音频路由将立即切换为默认设备。

通过 setDefaultAudioRoute 指定默认音频路由(扬声器/听筒)和 SDK 默认的插拔外设时的音频路由切换策略,已能支持绝大多数场景需求。

手动切换音频路由

如果以上默认的音频路由判定和切换策略不能满足你的场景需求,特别在接入外接设备时,需要将音频路由强制切换到扬声器或听筒等其他路由,参考以下用法:

  1. 调用 setAudioRoute 将当前音频路由切换到指定设备。
  2. 成功切换音频路由后,将触发 onAudioRouteChanged 回调提示音频路由更改。

注意:

  • 你必须提前调用 setAudioScenario 将音频场景切换为 AUDIO_SCENARIO_COMMUNICATION(2) ,才可强制切换音频路由,例如蓝牙、USB设备等,否则手动切换音频路由会失败。
  • 对 Android 设备,当接入有线耳机时,无法将音频路由切换到原生听筒设备。另外,当 Android 设备同时接入有线耳机和蓝牙耳机时,可供切换的设备范围在不同的手机系统型号上有所不同。
  • 对 iOS 设备,强制切换音频路由时,目标路由仅支持内置扬声器。具体请参看 API 文档。

API 参考

AndroidiOS
设置默认音频路由setDefaultAudioRoutesetDefaultAudioRoute:
强制切换音频路由setAudioRoutesetAudioRoute:
获取当前的音频路由getAudioRoutegetAudioRoute