Class ZegoAudioRoom


  • public class ZegoAudioRoom
    extends java.lang.Object
    对外提供 ZegoAudioRoom 所有接口,通过此类可以实现 AudioRoom 相关功能。

    注意:必须先依赖 ZegoLiveRoom 库才能正常使用此库

    Copyright © 2017 Zego. All rights reserved.

    • Field Detail

      • ERROR_OUT_OF_MAX_PLAY_CHANNEL_COUNT

        public static int ERROR_OUT_OF_MAX_PLAY_CHANNEL_COUNT
    • Constructor Detail

      • ZegoAudioRoom

        public ZegoAudioRoom()
    • Method Detail

      • version

        public static java.lang.String version()
      • version2

        public static java.lang.String version2()
      • setUseTestEnv

        public static void setUseTestEnv​(boolean useTestEnv)
        是否启用测试环境。默认关闭
        Parameters:
        useTestEnv - true 使用测试环境;false 关闭测试环境
      • setVerbose

        public static void setVerbose​(boolean onVerbose)
        调试信息开关。默认关闭
        Parameters:
        onVerbose - true 开启调试信息;false 关闭调试信息
      • uploadLog

        public static void uploadLog()
        触发日志上报

        注意:在初始化 SDK 成功后调用。

      • getMaxPlayChannelCount

        public static int getMaxPlayChannelCount()
        获取 SDK 支持的最大同时播放流数 (static method)
        Returns:
        最大支持播放流数
      • setUser

        public static boolean setUser​(java.lang.String userId,
                                      java.lang.String userName)
        设置用户信息
        Parameters:
        userId - 用户ID
        userName - 用户名
        Returns:
        true 设置成功;false 设置失败
      • setConfig

        public static void setConfig​(java.lang.String config)
        设置sdk配置信息.

        注意:确保在 InitSDK 前调用,但开启拉流加速(config为“prefer_play_ultra_source=1”)可在 InitSDK 之后,拉流之前调用

        Parameters:
        config - 参考ZegoConstants.Config, 具体配置信息请咨询技术支持
      • setAudioDeviceMode

        public static void setAudioDeviceMode​(int mode)
        设置音频设备模式.

        注意:
        1. 在推流预览前后调用均有效.
        2. 调用该接口会触发设备的启动切换,建议不要频繁调用,避免不必要的开销与硬件问题
        3. 调用本接口可能导致音量模式在 通话/媒体 间切换,若媒体音量和通话音量不一致,可能导致音量变化.

        Parameters:
        mode - 模式, 参考 ZegoConstants.AudioDeviceMode, 默认值 ZegoConstants.AudioDeviceMode.Auto
      • setAudioDevice

        public static boolean setAudioDevice​(int deviceType,
                                             java.lang.String deviceId)
        设置音频设备。

        注意: 1. 此接口仅在 API >= 23 的系统上有效,且必须在推、拉流前调用;
        2. 此接口默认不开放,如需要此功能,请联系技术支持人员。

        Parameters:
        deviceType - 设备类型(指明是输入设备还是输出设备),参考 ZegoConstants.AudioDeviceType
        deviceId - 设备 ID,通过系统 API: AudioManager.getDevices 获得;如果要恢复默认设备,请将此值置为空串
        Returns:
        true 如果调用成功,否则返回 false
      • initWithAppId

        public boolean initWithAppId​(long appId,
                                     byte[] appSignature,
                                     android.content.Context context)
        初始化 SDK。

        注意:请确保在所有 API 之前调用。

        Parameters:
        appId - Zego派发的数字Id,各个开发者的唯一标识
        appSignature - Zego派发的签名,用来检验对应 appId 的合法性
        context - Application Context
        Returns:
        true: 初始化成功; false: 初始化失败
      • setAudioPrepDelegate

        public void setAudioPrepDelegate​(ZegoAudioPrepDelegate2 callback,
                                         ZegoExtPrepSet config)
        设置音频前(3A处理后、耳返前)处理回调, 并开启/关闭音频前处理特性

        注意: 必须在初始化 SDK 之后预览、推流、拉流前调用

        Parameters:
        callback - 音频前处理回调实例,该接口设置的回调处理音频影响耳返效果
        config - 预处理参数,包括是否对原始数据进行编码、采样率、声道数等。 SDK 根据设置的参数返回采集的音频数据
      • setAudioPrepAfterLoopbackDelegate

        public void setAudioPrepAfterLoopbackDelegate​(ZegoAudioProcDelegate callback,
                                                      ZegoExtPrepSet config)
        设置音频(耳返后)处理回调, 并开启/关闭音频处理特性

        注意: 必须在初始化 SDK 之后推流前调用

        Parameters:
        callback - 音频前处理回调实例,该接口设置的回调处理音频不影响耳返效果
        config - 预处理参数,包括是否对原始数据进行编码、采样率、声道数等。 SDK 根据设置的参数返回采集的音频数据
      • setAudioPostpDelegate

        public void setAudioPostpDelegate​(ZegoAudioPostpDelegate callback,
                                          ZegoExtPrepSet config)
        设置音频后处理回调,仅在 enableAudioPostp(boolean, String) 设置为 true 时才会回调

        注意: 必须在initSDK后,在调用预览,拉流,推流,启动播放器接口前设置

        Parameters:
        callback - 音频后处理回调实例, 当 callback 为空时,会忽略后面的参数
        config - 预处理参数,包括是否对原始数据进行编码、采样率、声道数等。 SDK 根据设置的参数返回采集的音频数据
        See Also:
        enableAudioPostp(boolean,java.lang.String)
      • setAlignedAudioAuxDataCallback

        public void setAlignedAudioAuxDataCallback​(IZegoAudioAuxDataCallback callback)
        设置对齐后的混音数据回调 enableAlignedAudioAuxData(boolean, ZegoAudioAuxDataConfig) 设置为 true 时才会回调

        注意:
        1. 必须在 #initSDK(long, byte[]) 后,[startPublishingStream]、[startRecord] 前调用
        2. 仅在使用 enableAlignedAudioAuxData 开启了抛出对齐后的混音数据特性且 [startPublishingStream] 或 [startRecord] 才会回调
        3. 如果想要从此回调中获取媒体播放器的音频混音数据,需要调用 [enableAux] 或媒体播放器类型为 Aux

        Parameters:
        callback - 对齐的混音回调实例
        See Also:
        enableAlignedAudioAuxData(boolean, ZegoAudioAuxDataConfig)
      • enableAlignedAudioAuxData

        public void enableAlignedAudioAuxData​(boolean enable,
                                              ZegoAudioAuxDataConfig config)
        开启/关闭抛出对齐后的混音数据特性 setAlignedAudioAuxDataCallback(IZegoAudioAuxDataCallback) 设置对齐后的混音数据回调

        注意: 需要在初始化 SDK 之后调用

        Parameters:
        enable - true:开启, false:关闭
        config - 音频参数配置
        See Also:
        #setAlignedAudioAuxDataCallback(IZegoAlignedAudioAuxDataCallback)
      • setAudioRoomDelegate

        public void setAudioRoomDelegate​(ZegoAudioRoomDelegate delegate)
        设置房间事件回调。
        Parameters:
        delegate - 房间事件处理协议
      • setCustomToken

        public void setCustomToken​(java.lang.String thirdPartyToken)
        设置自定义token信息。

        注意:必须在 loginRoom(String, ZegoLoginAudioRoomCallback) 之前调用。退出房间后失效。

        使用此方法验证登录及推流时用户的合法性,登录房间前调用,支持登录后重置,token的生成规则请联系即构。若不需要验证用户合法性,不需要调用此函数。

        Parameters:
        thirdPartyToken - token信息
      • loginRoom

        public boolean loginRoom​(java.lang.String roomId,
                                 ZegoLoginAudioRoomCallback delegate)
        登录房间。
        Parameters:
        roomId - 房间唯一ID
        delegate - 登录完成以后的通知回调
        Returns:
        true 登录成功;false 登录失败
      • switchRoom

        public boolean switchRoom​(java.lang.String roomId,
                                  ZegoLoginAudioRoomCallback delegate)
        切换房间 调用成功 会停止推拉流(登录房间成功后,需要快速切换到其它房间时使用)
        Parameters:
        roomId - 房间唯一ID
        delegate - 切换房间完成以后的通知回调
        Returns:
        true 登录成功;false 登录失败
      • logoutRoom

        public boolean logoutRoom()
        退出房间,停止所有的推拉流。
        Returns:
        true 成功;false 失败
      • setAudioLiveEventDelegate

        public void setAudioLiveEventDelegate​(ZegoAudioLiveEventDelegate delegate)
        设置音频直播事件回调。
        Parameters:
        delegate - 音频直播事件协议
      • setAudioDeviceEventDelegate

        public void setAudioDeviceEventDelegate​(ZegoAudioDeviceEventDelegate delegate)
        设置音频设备错误通知回调。
        Parameters:
        delegate - 音频设备消息协议
      • setAudioAVEngineDelegate

        public void setAudioAVEngineDelegate​(ZegoAudioAVEngineDelegate delegate)
        设置音频引擎状态回调。
        Parameters:
        delegate - 音频引擎状态协议
      • setAudioRouteDelegate

        public void setAudioRouteDelegate​(ZegoAudioRouteDelegate delegate)
        设置音频路由回调
        Parameters:
        delegate - 音频路由协议
      • pauseAudioModule

        public void pauseAudioModule()
        暂停音频模块。 用于需要暂停指定模块的场合,例如来电时暂定音频模块; 暂停指定模块后,注意在合适时机下恢复模块。
        See Also:
        resumeAudioModule(), resumeModule(int)
      • resumeAudioModule

        public void resumeAudioModule()
        恢复音频模块。 用于需要恢复指定模块的场合,例如来电结束后恢复音频模块。
        See Also:
        pauseAudioModule(), pauseModule(int)
      • unInit

        public void unInit()
        释放 SDK 资源,停止各种系统监听。
      • setAudioPublisherDelegate

        public void setAudioPublisherDelegate​(ZegoAudioLivePublisherDelegate delegate)
        设置音频发布者回调协议。
        Parameters:
        delegate - 回调协议
      • setAudioPublisherExDelegate

        public void setAudioPublisherExDelegate​(ZegoAudioLivePublisherExDelegate delegate)
        设置音频发布者回调协议。
        Parameters:
        delegate - 回调协议
      • setUserStateUpdate

        public void setUserStateUpdate​(boolean userStateUpdate)
        设置用户进入/退出房间是否通知其他用户,默认不通知。 userStateUpdate为房间属性而非用户属性,设置的是该房间内是否会进行用户状态的广播。如果需要在房间内用户状态改变时,其他用户能收到通知,请为所有用户设置为true;反之,设置为false。设置为true后,方可从OnUserUpdate回调收到用户状态变更通知
        Parameters:
        userStateUpdate - true: 当有用户进入/退出房间时,会通过 ZegoAudioRoomDelegate.onUserUpdate(ZegoUserState[], int) 通知房间内其它用户; false: 当有用户进入/退出房间时不通知; 默认为 false
        See Also:
        ZegoAudioRoomDelegate.onUserUpdate(ZegoUserState[], int)
      • enableMic

        public boolean enableMic​(boolean enable)
        开启/关闭麦克风。
        Parameters:
        enable - true 打开;false 关闭
        Returns:
        true 设置成功;false 设置失败
      • enableMicDevice

        public boolean enableMicDevice​(boolean enable)
        设置是否允许SDK使用麦克风设备。调用时机为引擎创建后的任意时刻。接口由于涉及对设备的操作,极为耗时,不建议随便调用,只在真正需要让出麦克风给其他应用的时候才调用。
        Parameters:
        enable - true 表示允许使用麦克风,false 表示禁止使用麦克风,此时如果SDK在占用麦克风则会立即释放。
        Returns:
        true: 调用成功, false: 调用失败
      • enableAGC

        public void enableAGC​(boolean enable)
        音频采集自动增益开关。 默认关闭
        Parameters:
        enable - true 打开;false 关闭
      • enableAEC

        public void enableAEC​(boolean enable)
        回声消除开关。
        Parameters:
        enable - true: 开启回声消除;false: 关闭回声消除
      • setAECMode

        public void setAECMode​(int mode)
        设置回声消除模式
        Parameters:
        mode - 回声消除模式, 参考 ZegoConstants.AECMode
      • enableLoopback

        public boolean enableLoopback​(boolean enable)
        开启/关闭采集监听。

        推流时可调用本 API 进行参数配置。连接耳麦时设置才实际生效。开启采集监听,主播方讲话后,会听到自己的声音

        耳返默认是在采集之后、前处理之前返回,如果需要在前处理之后返回请咨询技术支持

        Parameters:
        enable - true 打开;false 关闭
        Returns:
        true 设置成功;false 设置失败
      • setLoopbackVolume

        public void setLoopbackVolume​(int volume)
        设置采集监听音量。
        Parameters:
        volume - 音量大小,取值范围 [0, 200], 默认 60
      • setCaptureVolume

        public void setCaptureVolume​(int volume)
        设置采集音量
        Parameters:
        volume - 音量大小,取值范围 [0, 200], 默认 100
      • getCaptureSoundLevel

        public float getCaptureSoundLevel()
        获取当前音频采集的音量。
        Returns:
        当前采集音量大小
      • setLatencyMode

        public void setLatencyMode​(int mode)
        设置音频延迟模式(编码模式)。
        Parameters:
        mode - 音频延迟模式,参见 ZegoConstants.LatencyMode
      • setManualPublish

        public void setManualPublish​(boolean manual)
        设置是否手动推流。

        注意:必须在 loginRoom(String, ZegoLoginAudioRoomCallback) 之前调用

        Parameters:
        manual - true: 登录房间后,不自动推流,需要调用 startPublish() 手动推流;
        false: 登录房间后,会自动推流;
        默认值为 false,登录成功后,会自动推流。
      • setManualPlay

        public void setManualPlay​(boolean manual)
        设置是否手动拉流。

        注意:必须在 loginRoom(String, ZegoLoginAudioRoomCallback) 之前调用

        Parameters:
        manual - true: 登录房间后,不自动拉流,需要调用 startPlay(String) 手动拉流;
        false: 登录房间后,会自动拉流;
        默认值为 false,登录成功后,会自动拉流。
      • startPublish

        public boolean startPublish()
        手动推流。

        仅在 setManualPublish(boolean) 为 true 时有效

        Returns:
        true 调用成功(不表示推流一定成功);false 调用失败
      • startPublish

        public boolean startPublish​(java.lang.String streamId)
        手动推流。

        仅在 setManualPublish(boolean) 为 true 时有效

        Parameters:
        streamId - 自定义的流ID
        Returns:
        true 调用成功(不表示推流一定成功);false 调用失败
      • startPlay

        public boolean startPlay​(java.lang.String streamId)
        手动拉流。

        仅在 setManualPlay(boolean) 为 true 时有效

        Parameters:
        streamId - 自定义的流ID
        Returns:
        true 调用成功(不表示推流一定成功);false 调用失败
      • startPlay

        public boolean startPlay​(java.lang.String streamId,
                                 ZegoStreamExtraPlayInfo info)
        手动拉流。

        仅在 setManualPlay(boolean) 为 true 时有效

        Parameters:
        streamId - 自定义的流ID
        info - 拉流附加信息,各个值的含义请参考 ZegoStreamExtraPlayInfo
        Returns:
        true 调用成功(不表示推流一定成功);false 调用失败
      • stopPublish

        public boolean stopPublish()
        手动停止推流。

        仅在 setManualPublish(boolean) 为 true 时有效

        Returns:
        true 调用成功; false 调用失败
      • stopPlay

        public boolean stopPlay​(java.lang.String streamId)
        手动停止拉流。

        仅在 setManualPublish(boolean) 为 true 时有效

        Parameters:
        streamId - 流ID
        Returns:
        true 调用成功; false 调用失败
      • enableNoiseSuppress

        public boolean enableNoiseSuppress​(boolean enable)
        音频采集噪声抑制开关.
        Parameters:
        enable - true: 开启; false: 关闭
        Returns:
        true: 调用成功; false: 调用失败
      • setNoiseSuppressMode

        public boolean setNoiseSuppressMode​(int mode)
        设置音频采集降噪等级。

        仅在 enableNoiseSuppress 为 true 时有效, 默认为 MEDIUM

        Parameters:
        mode - 降噪等级,详见 ZegoConstants.ANSMode
        Returns:
        true 成功,false 失败
      • enableTransientNoiseSuppress

        public boolean enableTransientNoiseSuppress​(boolean enable)
        音频采集的瞬态噪声抑制开关(消除键盘、敲桌子等瞬态噪声)
        Parameters:
        enable - true: 开启; false: 关闭
        Returns:
        true: 调用成功; false: 调用失败
      • pauseModule

        public void pauseModule​(int moduleType)
        暂停设备模块。 用于需要暂停指定模块的场合,例如来电时; 暂停指定模块后,注意在合适时机下恢复模块。
        Parameters:
        moduleType - 设备类型, 参考 ZegoConstants.ModuleType
        See Also:
        pauseAudioModule(), resumeModule(int)
      • sendCustomCommand

        public boolean sendCustomCommand​(ZegoUser[] listMember,
                                         java.lang.String content,
                                         ZegoCustomCommandDelegate delegate)
        发送自定义消息.
        Parameters:
        listMember - 接受消息的用户列表
        content - 消息内容
        delegate - 消息发送结果
        Returns:
        true: 发送成功; false: 发送失败
      • setAudioPlayerDelegate

        public void setAudioPlayerDelegate​(ZegoAudioLivePlayerDelegate delegate)
        音频播放回调。
        Parameters:
        delegate - 音频播放回调协议
      • enableSpeaker

        public boolean enableSpeaker​(boolean enable)
        静音开头(声音输出)
        Parameters:
        enable - true 开启;false 静音
        Returns:
        true 设置成功;false 设置失败
      • setBuiltinSpeakerOn

        public boolean setBuiltinSpeakerOn​(boolean switchOn)
        手机内置扬声器开关
        Parameters:
        switchOn - true 打开; false 关闭
        Returns:
        true 设置成功;false 设置失败
      • setPlayVolume

        public void setPlayVolume​(int volume)
        设置播放音量
        Parameters:
        volume - 音量大小, 取值范围[0, 200], 默认 100
      • setPlayVolume

        public boolean setPlayVolume​(int volume,
                                     java.lang.String streamId)
        设置指定流 ID 的播放音量。 拉流之后有效,本次拉流有效。
        Parameters:
        volume - 音量大小, 取值范围[0, 200], 默认 100
        streamId - 播放流 ID
        Returns:
        true:调用成功, false:调用失败
      • getSoundLevelOfStream

        public float getSoundLevelOfStream​(java.lang.String streamId)
        获取当前播放音频的音量
        Parameters:
        streamId - 播放流名
        Returns:
        对应音频的音量
      • enableSelectedAudioRecord

        @Deprecated
        public boolean enableSelectedAudioRecord​(int mask,
                                                 int sampleRate)
        Deprecated.
        开启音频回调。

        注意:在启动推流或者启动本地录制(MediaRecorder)的时候,才能开启音频录制

        Parameters:
        mask - 音源选择,参考 ZegoConstants.AudioRecordMask
        sampleRate - 采样率 8000, 16000, 22050, 24000, 32000, 44100, 48000
        Returns:
        true:调用成功, false:调用失败
      • enableDTX

        public void enableDTX​(boolean enable)
        是否开启离散音频包发送

        注意:


        1.推流前调用有效。以 RTC 方式推流,此接口才会生效。
        2.可以和 enableVAD 配合使用。
        3.开启离散音频包发送可以在关闭麦克风或者静音的状态下,停止音频包的发送,节省用户流量。
        4.如果为音频单流(非混流)转推 CDN,开启此选项将导致 CDN 在设定时间内未收到数据包认为流关闭而断开连接,所以此种情况不建议开启。
        5.SDK 默认关闭该特性。
        Parameters:
        enable - true 开启,推流中检测为静音的数据包不发送;false 关闭,推流中的静音数据包照常发送。默认是 false。
      • enableVAD

        public void enableVAD​(boolean enable)
        是否开启语音活动检测
        Parameters:
        enable - true 开启; false 关闭, 默认关闭 提示: 在推流前调用,只有纯 UDP 方案才可以调用此接口.
      • setAudioBitrate

        public boolean setAudioBitrate​(int bitrate)
        设置音频码率.
        Parameters:
        bitrate - 码率,单位 b/s
        Returns:
        true:调用成功;false:调用失败
      • restartPlayStream

        public boolean restartPlayStream​(java.lang.String streamId)
        ZegoAudioLivePlayerDelegate.onPlayStateUpdate(int, ZegoAudioStream) 回调返回拉流失败时,可通过此 API 重新拉流。
        Parameters:
        streamId - 需要重新拉取的流 ID
        Returns:
        true 调用成功(不表示拉流一定成功);false 调用失败
      • enableAECWhenHeadsetDetected

        public void enableAECWhenHeadsetDetected​(boolean enable)
        耳机插入状态下是否使用回声消除。

        注意:InitSDK之后,推流之前使用。

        Parameters:
        enable - true 使用,false 不使用。默认 false
      • enableAudioTrafficControl

        public void enableAudioTrafficControl​(boolean enable)
        设置是否开启音频流量控制

        注意:只适用于 UDP 推流。

        Parameters:
        enable - true 开启,false 不开启。
      • getLiveRoomInstance

        public ZegoLiveRoom getLiveRoomInstance()
        获取 ZegoLiveRoom 实例(当需要使用 ZegoLiveRoom 实例的方法,但 ZegoAudioRoom 又没有提供时,可通过此 API 获取 ZegoLiveRoom 实例后直接调用)。

        大部分情况下,ZegoAudioRoom 提供的方法已经够用,应尽量避免直接使用 ZegoLiveRoom 实例的方法,以免出现时序不对或者逻辑冲突等问题。

      • setAudioEqualizerGain

        @Deprecated
        public boolean setAudioEqualizerGain​(int bandIndex,
                                             float bandGain)
        Deprecated.
        请使用 ZegoAudioProcessing.setAudioEqualizerGain(int, float)
        音效均衡器

        注意:在InitSDK之后调用。使用此接口前请与即构技术支持联系确认是否支持此功能

        Parameters:
        bandIndex - 取值范围[0, 9]。分别对应10个频带,其中心频率分别是[31, 62, 125, 250, 500, 1K, 2K, 4K, 8K, 16K]Hz
        bandGain - 取值范围[-15, 15]。默认值是0,如果所有频带的增益值全部为0,则会关闭EQ功能
        Returns:
        true 调用成功,false 调用失败
      • setRecvBufferLevelLimit

        public boolean setRecvBufferLevelLimit​(int minBufferLevel,
                                               int maxBufferLevel,
                                               java.lang.String streamId)
        设置拉流播放缓存自适应调整的区间范围(上下限)

        注意:
        调用时机为拉流前或者拉流中, 每次拉流都需要重新设置
        上下限在未设置时, 内部默认区间范围 [0, 4000]
        当设置的上限小于下限时,会自动将上限取值为下限

        Parameters:
        minBufferLevel - 缓存自适应区间下限, 单位毫秒. 当设置的值小于等于0表示未设置下限.
        maxBufferLevel - 缓存自适应区间上限, 单位毫秒. 当设置的值小于等于0表示未设置上限. 当设置的上限超过4000时,会取值4000.
        streamId - 流 ID
        Returns:
        true 设置成功, false 设置失败