AudioRouterManager 负责管理扬声器 / 听筒 / 有线耳机 / 蓝牙耳机之间的音频输出路由。本页为接口参考;完整的初始化顺序、自动切换策略与最佳实践请见 音频路由使用。
获取与释放
通过RTCEngine 获取单例,不要自行 new:
实例方法
setAudioRouterCalllback(callback)
参数说明:
callback:AudioRouterCallback,路由变化回调实现。
void)。
方法名为setAudioRouterCalllback(Calllback含 3 个l),请按源码原样调用。
setAutoChangeAudioRouter(isAutoChange)
setAutoChangeAudioRouter(isAutoChange, false, false),即听筒优先级高于扬声器、蓝牙耳机优先级高于有线耳机。参数说明:
isAutoChange:boolean,true由内部自动选路,false仅监听不自动切换。
void)。
setAutoChangeAudioRouter(isAutoChange, isPrioritySpeaker, isPriorityWiredEarphone)
参数说明:
isAutoChange:boolean,是否自动切换路由。isPrioritySpeaker:boolean,true扬声器优先于听筒,false听筒优先于扬声器。isPriorityWiredEarphone:boolean,true有线耳机优先于蓝牙耳机,false蓝牙耳机优先于有线耳机。
void)。
setMode(mode)
AudioManager 为准(如 MODE_IN_COMMUNICATION)。Android 6.0+ 下 init() 不会自动设置模式,建议每次切换业务场景前主动调用。参数说明:
mode:int,AudioManager音频模式。
void)。
init()
参数说明:无。
返回值说明:无(
void)。
switchAudioRouter(type)
UN_KNOW 表示按当前自动选路策略重新选择最合适的路由。参数说明:
type:AudioOutputDeviceType,目标输出设备类型。
void)。
release(changeMode)
参数说明:
changeMode:boolean,true释放时把音频模式恢复为MODE_NORMAL并切回扬声器;false不主动恢复模式。
void)。
rtcEngine.releaseAudioRouterManager()内部调用release(true)。
getExitAudioOutputDevices()
参数说明:无。
返回值说明:
HashMap<AudioOutputDeviceType, AudioDeviceInfo>,设备类型到设备信息的映射。
getActiveAudioOutputDevice()
参数说明:无。
返回值说明:
Pair<AudioOutputDeviceType, AudioDeviceInfo>,first 为设备类型,second 为设备信息。
getAudioRouterCallback()
参数说明:无。
返回值说明:
AudioRouterCallback,当前回调实例,可能为 null。
getAudioManager()
AudioManager。参数说明:无。
返回值说明:
AudioManager。
requestAudioFocus()
参数说明:无。
返回值说明:
int,请求结果(同系统 AudioManager.requestAudioFocus 返回值)。
releaseAudioFocus()
参数说明:无。
返回值说明:
int,释放结果。
setFocusChangeListener(listener)
参数说明:
listener:AudioManager.OnAudioFocusChangeListener,焦点变化监听器。
void)。
静态方法
getValidBluetoothName(curName, context, callback)
AudioDeviceInfo.getProductName() 获取到的不准确蓝牙名称。Android 12+ 需关注 BLUETOOTH_CONNECT 权限。参数说明:
curName:String,当前获取到的蓝牙名称。context:Context,上下文。callback:ValidBluetoothNameCallback,纠正后的名称回调。
void)。
枚举 AudioOutputDeviceType
回调接口
AudioRouterCallback
exitOutputDeviceChange:当前“可选”的输出设备列表发生变化(插拔耳机、连接/断开蓝牙等)。activeOutputDeviceChange:当前“实际生效”的输出设备发生变化,UI 展示当前设备应以此为准。onAudioBecomingNoisy:路由切换后系统可能产生噪音(如耳机拔出转外放),可在此暂停播放或降低音量。
ValidBluetoothNameCallback
onValidBluetoothName:返回纠正后的蓝牙设备名称。