音频路由是指 app 在播放音频时使用的设备通道。常见的音频通道有:耳机、听筒、扬声器、蓝牙耳机等。本文介绍声网提供的音频路由相关的 API,及其使用规律。
默认音频路由指的是设备本身的音频路由,通常为手机的听筒或扬声器。各声网频道场景下,默认的音频路由如下:
改变音频路由有以下三种方式:
setDefaultAudioRoutetoSpeakerphone
方法,改变默认的音频路由。setEnableSpeakerphone
方法,切换当前的音频路由。该 API 能暂时改变音频路由。在实际应用中,上述改变音频路由的行为结果遵循以下原则:
当用户插入外接耳机时,音频路由会自动切换到耳机进行采集和播放。当有多个音频设备连接到手机时,音频路由由最后一个连接的设备决定。
步骤 | 行为 | 音频路由 |
---|---|---|
1 | 加入语音直播或视频直播频道 | 扬声器 |
2 | 插入耳机 | 耳机 |
3 | 不拔掉耳机的情况下连接蓝牙 | 蓝牙 |
4 | 断开蓝牙 | 耳机 |
你可以通过调用 setDefaultAudioRoutetoSpeakerphone
在听筒和扬声器之间选择其一作为默认的音频路由。该方法可以加入频道前、频道内、离开频道后调用。
步骤 | 行为 | 音频路由 |
---|---|---|
1 | 插入耳机 | 耳机 |
2 | 拔出耳机 | 不同场景下的默认音频路由 |
3 | 调用 setDefaultAudioRoutetoSpeakerphone(true) |
扬声器 |
4 | 插入耳机 | 耳机 |
5 | 调用 setDefaultAudioRoutetoSpeakerphone(true) |
耳机 |
6 | 拔出耳机 | 扬声器 |
setDefaultAudioRoutetoSpeakerphone
仅对设备本身的音频路由生效,因此在手机插入耳机的时候,调用该 API 不生效。声网还提供一个暂态的 API setEnableSpeakerohone
来设置当前的音频路由。成功调用 setEnableSpeakerphone(true)
后,SDK 会根据系统能力,暂时将音频路由切换到外放。
任何改变音频路由的行为,如用户插拔耳机,调用 setEnableSpeakerphone(false)
,或用户切换主播/观众角色,都会覆盖该 API 的设置。系统音频路由会回到上述原则下的路由。
示例一
步骤 | 行为 | 音频路由 |
---|---|---|
1 | 加入语音直播或视频直播频道 | 扬声器 |
2 | 插入耳机 | 耳机 |
3 | 调用 setEnableSpeakerphone(true) |
|
4 | 调用 setEnableSpeakerphone(false) |
耳机 |
setEnableSpeakerphone(true)
无法将音频路由设置到扬声器。示例二
步骤 | 行为 | 音频路由 |
---|---|---|
1 | 加入语音通话频道 | 听筒 |
2 | 调用 setEnableSpeakerphone(true) |
外放 |
3 | 插入耳机 | 耳机 |
4 | 拔出耳机 | 听筒 |
setEnableSpeakerphone
为暂态设置。拔出耳机后,音频路由回到语音通话场景下默认的音频路由。在某些场景中,声网会使用媒体音量。无论使用媒体音量或通话音量,不影响上述原则下音频路由的选择。
setEnableSpeakerphonhe(true)
无法切换音频路由为扬声器。onAudioRouteChanged/didAudioRouteChanged
回调。你可以在该回调中了解当前的音频路由。