设置音频路由

  • Android

更新时间不可用

了解实时互动 RTC 在不同平台上的设置音频路由方式,包括接入流程、关键配置和平台差异。

音频路由是指 App 在播放音频时使用的音频输出设备。例如,听筒、耳机、扬声器和可外放音频的蓝牙设备都可作为音频路由。

本文主要介绍音频路由的概念,并展示如何更改音频路由。

默认音频路由

默认音频路由是指设备本身采用的路由,例如移动设备上的扬声器。

在不同的场景下,SDK 使用的默认音频路由如下所示:

  • 语音通话:听筒
  • 视频通话:扬声器
  • 语音直播:扬声器
  • 视频直播:扬声器

更改音频路由

更改原则

根据使用角色的不同,你可以通过以下方法更改音频路由:

  • 设备用户:添加或移除外部设备,例如耳机或蓝牙设备。
  • App 开发者:
    • 加入频道前,调用 setDefaultAudioRoutetoSpeakerphone 更改默认音频路由。
    • 加入频道后,调用 setEnableSpeakerphone 设置当前的音频路由。

无论采用何种方法对音频路由进行更改,更改生效的优先级都遵循如下原则:

  1. 用户行为对音频路由更改的优先级最高。

    用户连接有线耳机、蓝牙耳机等外部设备后,音频路由会自动切换到外部设备。如果用户先后连接了多个外部设备,则音频路由会自动切换到最后一个连接的设备。

  2. 当用户没有连接外部设备时,SDK 会使用默认音频路由。

    调用 setDefaultAudioRoutetoSpeakerphone 可以更改该默认设置。如果当前音频路由是设备本身,setDefaultAudioRoutetoSpeakerphone 会修改当前音频路由。

  3. 在没有系统限制的情况下,无论当前音频路由是外接设备、扬声器还是听筒,调用 setEnableSpeakerphone 都能切换当前音频路由。

    但该方法只对当前所在的频道生效,不会更改设备默认的音频路由。如果用户离开当前频道并加入新的频道,则 SDK 还是会使用默认的音频路由。

对音频路由的任何更改都会触发 onAudioRouteChanged 回调。你可以使用此回调来获取当前的音频路由。

插拔设备更改音频路由

当用户连接音频设备时,音频路由会发生改变。例如插入耳机时音频路由会自动切换到耳机。当连接多个设备时,音频路由会切换至最后连接的设备。

参考以下示例,了解插拔设备会怎样改变音频路由:

  1. 用户加入频道。音频路由为扬声器。
  2. 用户插入耳机。音频路由更改为耳机。
  3. 用户在没有拔出耳机的状态下,将移动设备连接至蓝牙音频设备。音频路由更改为蓝牙音频设备。
  4. 用户断开蓝牙音频设备与移动设备之间的连接。音频路由变回耳机。

更改默认音频路由

在通话之前,调用 setDefaultAudioRoutetoSpeakerphone 方法将默认音频路由切换为听筒或扬声器。该方法的 defaultToSpeaker 参数传入 true 代表设置默认音频路由为扬声器;传入 false 代表设置默认音频路由为听筒。该方法的设置在调用 destroy 销毁引擎前都有效。

参考以下示例,了解如何更改默认音频路由:

  1. 用户插入耳机。音频路由为耳机。
  2. 用户拔出耳机。音频路由更改为移动设备的默认音频路由,具体取决于你的使用场景。
  3. 在 App 中调用 setDefaultAudioRoutetoSpeakerphone(true)。音频路由更改为扬声器。
  4. 用户插入耳机。音频路由更改为耳机。
  5. 在 App 中调用 setDefaultAudioRoutetoSpeakerphone(true)。音频路由仍然为耳机,因为 setDefaultAudioRoutetoSpeakerphone 仅对设备本身的音频路由生效。
  6. 用户拔出耳机。音频路由更改为扬声器。

更改当前音频路由

如果操作系统允许,你可以调用 setEnableSpeakerphone 方法,更改当前音频路由为扬声器。

参考以下示例,了解如何更改当前音频路由:

  • 示例 1

    1. 用户加入频道。音频路由为扬声器。
    2. 用户插入耳机。音频路由更改为耳机。
    3. App 调用 setEnableSpeakerphone(true)。音频路由仍然为耳机。

    注意

    在媒体音量模式下,如果用户使用了蓝牙耳机、有线耳机等外接音频播放设备,则该方法的设置无效,音频只会通过外接设备播放。但对于安卓平台,在通话音量模式下,你可以先调用 setRouteInCommunicationMode 设置音频路由模式,再调用 setEnableSpeakerphone 来切换音频路由。

  • 示例 2

    1. 用户加入语音通话频道。音频路由为听筒。
    2. App 调用 setEnableSpeakerphone(true)。音频路由更改为扬声器。
    3. 用户插入耳机。音频路由更改为耳机。
    4. 用户拔出耳机。音频路由更改为听筒。

参考信息

示例项目

声网提供了设置音频路由的示例项目供你参考。你可以前往下载或查看其中的源代码。

API 参考