ARTC SDK为用户托管了手机自身设备和不同外设之间切换的路由管理任务,并支持用户根据业务场景和需求自定义当前音频播放设备。
概述
音频路由(Audio Route)作为音频设备管理中的重要组成模块,用于判断和调整当前通话过程中声音播放的音频设备。设备类型除了包含手机自带的听筒和扬声器之外,还包括有线耳机和蓝牙耳机,以及多种类型的外置声卡等外设。
音频路由选择
优先级
音频路由的优先级在SDK内部已经定义好,并会根据当前外设的连接状态自动切换,切换的流程图如下所示:
默认音频路由
默认音频路由用于在入会前设置默认的音频路由设备,在听筒和扬声器之间选择。如果没有设置该功能,将默认使用扬声器。
当连接的蓝牙耳机和有线耳机等其他外设断开连接时,将使用该功能设置的设备进行播放。
/**
* @brief 设置默认音频输出是否从扬声器出声,默认从扬声器出声
* @param defaultToSpeakerphone
* - true: 扬声器模式(默认扬声器)
* - false: 听筒模式
* @return
* - 0: 成功
* - <0: 失败
*/
public int setDefaultAudioRoutetoSpeakerphone(boolean defaultToSpeakerphone);
当前音频路由
当前音频路由用于在会议当中设置当前播放的音频设备,在听筒和扬声器之间选择。如果没有设置该功能, 将使用默认音频路由所设置的设备进行播放。
在连接有线耳机或者蓝牙耳机等其他外设的情况下,该函数调用不生效。
当初始化音频参数
AliRtcAudioScenario
选择为AliRtcSceneMediaMode
/AliRtcSceneMusicMode
/AliRtcSceneChatroomMode
时,不建议切换播放设备到听筒,部分Android机型不支持在非voip
模式下使用听筒。如果有使用听筒的需求,请将AliRtcAudioScenario
参数设置为AliRtcSceneDefaultMode
。
/**
* @brief 设置音频输出为听筒还是扬声器
* @param enable true:扬声器模式(默认扬声器);false:听筒模式
* @return
* - 0: 成功
* - <0: 失败
*/
public int enableSpeakerphone(boolean enable);
/**
* @brief 获取当前音频输出为听筒还是扬声器
* @return
* - true: 扬声器模式;
* - false: 听筒模式
*/
public boolean isSpeakerOn();
音频路由设备回调
如果想获取音频播放设备切换时的回调需要注册并监听以下回调。
public abstract class AliRtcEngineEventListener {
/**
* @brief 警告通知
* @details 如果engine出现warning,通过这个回调通知app
* @param warn 警告类型
* @param message 警告消息
*/
public void onOccurWarning(int warn, String message);
}
warn返回值和设备类型对应关系如下表:
返回值 | 设备 |
返回值 | 设备 |
1 | 有线有麦耳机 |
2 | 听筒 |
3 | 有线无麦耳机 |
4 | 扬声器 |
6 | SCO 蓝牙设备 |
7 | A2DP 蓝牙设备 |
该文章对您有帮助吗?
- 本页导读 (1)
- 概述
- 音频路由选择
- 优先级
- 默认音频路由
- 当前音频路由
- 音频路由设备回调