public abstract class AVChatManagerLite
extends java.lang.Object
音视频通话统一接口,所有接口需主线程调用。
网络通话需要 Android JELLY_BEAN
及以上的系统版本。通话前请确保已经拥有了所需的各种权限,获取确实权限参考 AVChatManager.checkPermission(Context)
.
目前仅支持同时进行一通会话,如果存在多个网络通话,需要选择挂断优先级低的会话。 如果存在系统电话,或者有系统电话接入,建议挂断网络通话。
关于网络通话的呼出和呼入超时的设置,需要生层自己实现响应的定时器,SDK内部的超时已经被废弃,未来会移除。
网络通话目前分为两大部分,双人通话和多人通话。
所有类型音视频通话需要监听会话状态: observeAVChatState(AVChatStateObserverLite, boolean)
双人通话,包含了信令相关操作和音视频操作两部分。信令包括了会话的发起,接听,拒绝,挂断等,重要接口有:
call2(String, AVChatType, AVChatNotifyOption, AVChatCallback)
发起会话,通知到对方用户。accept2(long, AVChatCallback)
接听会话。hangUp2(long, AVChatCallback)
挂断会话。 sendControlCommand(long, byte, AVChatCallback)
发送控制指令,用户可以定义私有的控制指令。建议通过此接口实现音视频切换。双人会话需要额外注册相关监听器:
observeIncomingCall(Observer, boolean)
监听来电。observeCalleeAckNotification(Observer, boolean)
呼叫发起后,监听对方的接听结果。observeControlNotification(Observer, boolean)
所有控制指令的监听接口。 observeHangUpNotification(Observer, boolean)
监听对方的挂断通知。observeOnlineAckNotification(Observer, boolean)
监听多端登陆时其他端处理。多人通话,互动直播属于此模式。 此模式不包含所有的信令操作,需要客户上层自定义实现, 此模式仅仅包含了房间的加入和离开,以及音视频操作。重要接口有:
createRoom(String, String, AVChatCallback)
仅仅创建一个多人会话的房间,任何时候都可以调用。joinRoom2(String, AVChatType, AVChatCallback)
加入一个已经创建好的多人房间。leaveRoom2(String, AVChatCallback)
离开一个已经加入的多人房间。 互动直播,多人会议视频通话流程示例:
createRoom(String, String, AVChatCallback)
。 创建房间仅仅是在服务器预留一个房间名,房间未使用时有效期为30天,使用后的房间在所有用户退出后回收。observeAVChatState(AVChatStateObserverLite, boolean)
。enableRtc()
。 setChannelProfile(int)
。AVChatParameters.KEY_SESSION_LIVE_MODE
, AVChatParameters.KEY_SESSION_LIVE_URL
。enableVideo()
。setupVideoCapturer(AVChatVideoCapturer)
。setupLocalVideoRender(IVideoRender, boolean, int)
。setParameter(AVChatParameters.Key, Object)
, setParameters(AVChatParameters)
。startVideoPreview()
。joinRoom2(String, AVChatType, AVChatCallback)
。stopVideoPreview()
。disableVideo()
()} 。leaveRoom2(String, AVChatCallback)
。disableRtc()
。双人视频通话流程示例:
observeAVChatState(AVChatStateObserverLite, boolean)
等等。enableRtc()
。setChannelProfile(int)
。enableVideo()
。setupVideoCapturer(AVChatVideoCapturer)
。setupLocalVideoRender(IVideoRender, boolean, int)
。setParameter(AVChatParameters.Key, Object)
, setParameters(AVChatParameters)
。startVideoPreview()
。call2(String, AVChatType, AVChatNotifyOption, AVChatCallback)
, accept2(long, AVChatCallback)
。stopVideoPreview()
。disableVideo()
()} 。hangUp2(long, AVChatCallback)
。disableRtc()
。构造器和说明 |
---|
AVChatManagerLite() |
限定符和类型 | 方法和说明 |
---|---|
abstract void |
accept2(long chatId,
AVChatCallback<java.lang.Void> callback)
信令层接听双人通话
在程序启动时需要注册
observeIncomingCall(Observer, boolean) , 这样在有其他用户
呼叫时将会收到来电通知, 收到来电通知后一般会有相应的界面展示, 如果需要接听电话那个需要调用此接口, 如果需要拒绝通话请调用
hangUp2(long, AVChatCallback) 。 |
abstract void |
call2(java.lang.String account,
AVChatType callType,
AVChatNotifyOption notifyOption,
AVChatCallback<AVChatData> callback)
信令层发起双人通话
在信令层发起呼叫, 成功调用此接口后对方会收到相应的会话通知。
|
abstract void |
createRoom(java.lang.String roomName,
java.lang.String extraMessage,
AVChatCallback<AVChatChannelInfo> callback)
创建多人通话房间
如果你需要使用多人会议和互动直播相关功能, 需要通过此接口创建一个多人房间,
然后通过
joinRoom2(String, AVChatType, AVChatCallback) 来加入房间。 |
abstract void |
createRoom(java.lang.String roomName,
java.lang.String extraMessage,
java.util.List<AVChatLiveTaskConfig> liveConfigList,
AVChatCallback<AVChatChannelInfo> callback)
创建多人通话房间并设置直播推流相关的参数
如果你需要使用多人会议和互动直播相关功能, 需要通过此接口创建一个多人房间,
然后通过
joinRoom2(String, AVChatType, AVChatCallback) 来加入房间。 |
abstract boolean |
disableRtc()
关闭音视频通话底层引擎
在通话结束后需要调用此接口关闭音视频通话引擎来释放资源。
|
abstract boolean |
disableVideo()
关闭视频模块
关闭视频相关模块。
|
abstract boolean |
enableRtc()
激活音视频通话底层引擎
在进行音视频通话前需要调用此接口来激活音视频通话引擎,
否则后续所有的接口调用会导致异常。
|
abstract boolean |
enableRtc(AVChatEngineConfig config)
激活音视频通话底层引擎
在进行音视频通话前需要调用此接口来激活音视频通话引擎,
否则后续所有的接口调用会导致异常。
|
abstract boolean |
enableRtc(AVChatServerAddresses serverAddresses)
已过时。
|
abstract boolean |
enableRtc(int osType)
已过时。
|
abstract boolean |
enableRtc(int osType,
boolean lowEnergy)
已过时。
|
abstract boolean |
enableRtc(int osType,
boolean lowEnergy,
AVChatServerAddresses address)
已过时。
|
abstract boolean |
enableVideo()
激活视频模块
如果你通话过程中有视频相关内容, 那必须在视频相关接口调用前先激活视频模块。
|
abstract long |
getCurrentChatId()
获取当前会话ID
每通会话都会有一个唯一的ID, 同时SDK仅同时允许一通会话进行。
|
static AVChatManagerLite |
getInstance()
获取基础音视频通话接口
基础版本音视频通话。
|
abstract <T> T |
getParameter(AVChatParameters.Key<T> key)
获取参数。
|
abstract AVChatParameters |
getParameters(AVChatParameters params)
获取参数。
|
abstract java.lang.Long |
getUidByAccount(java.lang.String account)
通过account 获取 uid
|
abstract void |
hangUp2(long chatId,
AVChatCallback<java.lang.Void> callback)
信令层挂断或者拒绝通话请求
在程序启动时需要注册
observeIncomingCall(Observer, boolean) , 这样在有其他用户
呼叫时将会收到来电通知, 收到来电通知后一般会有相应的界面展示, 如果需要拒绝电话调用此接口, 如果需要接听通话请调用
accept2(long, AVChatCallback) 。 |
abstract boolean |
isAllRemoteAudioMuted()
当前是否关闭用户语音数据播放.
|
abstract boolean |
isLocalAudioMuted()
本地语音是否静音.
|
abstract boolean |
isLocalVideoMuted()
是否发送本地视频流数据.
|
abstract boolean |
isMicrophoneMute()
检查麦克风是否静音
|
abstract boolean |
isRemoteAudioMuted(java.lang.String account)
当前是否关闭用户语音数据播放.
|
abstract boolean |
isRemoteVideoMuted(java.lang.String account)
当前是否关闭用户视频数据播放.
|
abstract void |
joinRoom2(java.lang.String roomName,
AVChatType callType,
AVChatCallback<AVChatData> callback)
加入已经预先创建的多人会议房间
加入一个多人会议房间前需要调用以下接口:
开启音视频引擎
enableRtc()
可选, 激活视频模块 enableVideo()
可选, 设置本地预览画布,setupLocalVideoRender(IVideoRender, boolean, int)
可选, 开启视频预览,startVideoPreview()
可选, 通话相关参数设置 setParameters(AVChatParameters)
当你成功加入会议后, 你会收到 AVChatStateObserverLite.onUserJoined(String) 来通知目前会议室内已经存在的用户。 |
abstract void |
leaveRoom2(java.lang.String roomName,
AVChatCallback<java.lang.Void> callback)
离开加入的多人会议房间
此接口仅仅是离开多人会话房间,如果需要销毁引擎释放资源需要调用以下接口:
可选, 关闭视频预览
stopVideoPreview() ()}
可选, 关闭视频模块 disableVideo() }
释放通话资源 disableRtc()
多人会议的离开其他用户是不会收到信令层的通知,只能通过媒体层的通知来获取用户离开 AVChatStateObserverLite.onUserLeave(String, int) 。 |
abstract void |
muteAllRemoteAudio(boolean muted)
设置是否允许播放远端用户数据.
|
abstract void |
muteLocalAudio(boolean muted)
开/关本地音频.
|
abstract void |
muteLocalVideo(boolean muted)
|
abstract void |
muteRemoteAudio(java.lang.String account,
boolean muted)
设置是否允许播放远端用户数据.
|
abstract void |
muteRemoteVideo(java.lang.String account,
boolean muted)
|
abstract void |
observeAVChatState(AVChatStateObserverLite observer,
boolean register)
注册/注销网络通话状态通知
网络通话开始后,所有的通话状态通过
AVChatStateObserverLite 进行通知。 |
abstract void |
observeCalleeAckNotification(Observer<AVChatCalleeAckEvent> observer,
boolean register)
注册/注销网络通话被叫方的响应(接听、拒绝、忙)
|
abstract void |
observeControlNotification(Observer<AVChatControlEvent> observer,
boolean register)
注册/注销网络通话控制消息(音视频模式切换通知)
会话相关的控制指令通知,用户可以自定义私有的控制指令。
|
abstract void |
observeHangUpNotification(Observer<AVChatCommonEvent> observer,
boolean register)
注册/注销网络通话对方挂断的通知
|
abstract void |
observeIncomingCall(Observer<AVChatData> observer,
boolean register)
注册/注销网络来电.
|
abstract void |
observeOnlineAckNotification(Observer<AVChatOnlineAckEvent> observer,
boolean register)
注册/注销同时在线的其他端对主叫方的响应
|
abstract void |
rate(int rate,
java.lang.String description)
当前通话打分
|
abstract void |
selectAudioDevice(int audioDevice)
|
abstract void |
sendControlCommand(long chatId,
byte controlCommand,
AVChatCallback<java.lang.Void> callback)
通用信令消息发送
在通话过程中, 你可以发送信令消息通知到房间内的其他用户。
|
abstract boolean |
setChannelProfile(int profile)
语音通话模式设置
在通话前可以设置本次通话的语音模式, 目前支持两种种语音模式。
|
abstract void |
setMicrophoneMute(boolean mute)
设置麦克风是否静音
|
abstract <T> void |
setParameter(AVChatParameters.Key<T> key,
T value)
设置参数。
|
abstract void |
setParameters(AVChatParameters params)
设置参数。
|
abstract void |
setSpeaker(boolean enable)
是否使用扬声器
|
abstract boolean |
setupLocalVideoRender(IVideoRender render,
boolean mirror,
int scalingType)
设置本地用户视频画布。
|
abstract boolean |
setupRemoteVideoRender(java.lang.String account,
IVideoRender render,
boolean mirror,
int scalingType)
设置远端用户视频画布。
|
abstract boolean |
setupVideoCapturer(AVChatVideoCapturer videoCapturer)
设置视频数据源
在进行视频通话时需要设置一个可用的视频数据源,该方法需要在
startVideoPreview() 前调用。 |
abstract boolean |
setVideoQualityStrategy(int strategy)
视频质量调整策略设置
目前视频调整支持三种模式:
清晰优先。
|
abstract boolean |
speakerEnabled()
扬声器是否打开
|
abstract boolean |
startVideoPreview()
开启本地视频预览
开启视频预览前需要调用
enableVideo() 打开视频模块,同时设置视频数据源 setupVideoCapturer(AVChatVideoCapturer) 。 |
abstract boolean |
stopVideoPreview()
关闭本地视频预览
在视频通话时,可以随时调用视频画面预览。
|
public static AVChatManagerLite getInstance()
获取基础音视频通话接口
基础版本音视频通话。 如果需要使用伴音以及本地录制等功能, 需要使用 AVChatManager
接口。
AVChatManagerLite
public abstract boolean enableRtc()
激活音视频通话底层引擎
在进行音视频通话前需要调用此接口来激活音视频通话引擎,
否则后续所有的接口调用会导致异常。如果方法调用成功, 后续需要调用 disableRtc()
来关闭音视频底层引擎, 否则会出现资源泄漏。
true
方法s调用成功,false
方法调用失败disableRtc()
@Deprecated public abstract boolean enableRtc(int osType)
enableRtc(AVChatEngineConfig)
激活音视频通话底层引擎
在进行音视频通话前需要调用此接口来激活音视频通话引擎,
否则后续所有的接口调用会导致异常。如果方法调用成功, 后续需要调用 disableRtc()
来关闭音视频底层引擎, 否则会出现资源泄漏。
osType
- AVChatOSCategory
true
方法调用成功,false
方法调用失败disableRtc()
@Deprecated public abstract boolean enableRtc(AVChatServerAddresses serverAddresses)
enableRtc(AVChatEngineConfig)
激活音视频通话底层引擎
在进行音视频通话前需要调用此接口来激活音视频通话引擎,
否则后续所有的接口调用会导致异常。如果方法调用成功, 后续需要调用 disableRtc()
来关闭音视频底层引擎, 否则会出现资源泄漏。
serverAddresses
- 私有化服务器地址true
方法调用成功,false
方法调用失败disableRtc()
@Deprecated public abstract boolean enableRtc(int osType, boolean lowEnergy)
enableRtc(AVChatEngineConfig)
激活音视频通话底层引擎
在进行音视频通话前需要调用此接口来激活音视频通话引擎,
否则后续所有的接口调用会导致异常。如果方法调用成功, 后续需要调用 disableRtc()
来关闭音视频底层引擎, 否则会出现资源泄漏。
osType
- AVChatOSCategory
lowEnergy
- 是否开启低功耗模式true
方法调用成功,false
方法调用失败disableRtc()
@Deprecated public abstract boolean enableRtc(int osType, boolean lowEnergy, AVChatServerAddresses address)
enableRtc(AVChatEngineConfig)
激活音视频通话底层引擎
在进行音视频通话前需要调用此接口来激活音视频通话引擎,
否则后续所有的接口调用会导致异常。如果方法调用成功, 后续需要调用 disableRtc()
来关闭音视频底层引擎, 否则会出现资源泄漏。
osType
- AVChatOSCategory
lowEnergy
- 是否开启低功耗模式address
- 私有化服务器地址true
方法调用成功,false
方法调用失败disableRtc()
public abstract boolean enableRtc(AVChatEngineConfig config)
激活音视频通话底层引擎
在进行音视频通话前需要调用此接口来激活音视频通话引擎,
否则后续所有的接口调用会导致异常。如果方法调用成功, 后续需要调用 disableRtc()
来关闭音视频底层引擎, 否则会出现资源泄漏。
config
- 启动引擎相关的配置,例如:osType 、lowEnergy 、serverAddresses 、encryptType 、encryptKey AVChatEngineConfig.Builder
true
方法调用成功,false
方法调用失败disableRtc()
public abstract boolean disableRtc()
关闭音视频通话底层引擎
在通话结束后需要调用此接口关闭音视频通话引擎来释放资源。 关闭音视频引擎后后续所有的其他调用都会失败或者异常。
true
方法调用成功,false
方法调用失败enableRtc()
public abstract boolean enableVideo()
激活视频模块
如果你通话过程中有视频相关内容, 那必须在视频相关接口调用前先激活视频模块。
通话结束前需要调用 disableVideo()
来关闭视频模块。
在通话过程中, 通过此接口可以实现引擎的音视频通话模式切换,
信令层可以通过使用 sendControlCommand(long, byte, AVChatCallback)
来通知
对方目前的会话模式切换。 默认情况下视频模块是处于非激活状态。
true
方法调用成功,false
方法调用失败disableVideo()
public abstract boolean disableVideo()
关闭视频模块
关闭视频相关模块。 在通过过程中调用会让引擎切换到语音模式, 如果信令层需要通知对方,则通过
sendControlCommand(long, byte, AVChatCallback)
实现。
true
方法调用成功,false
方法调用失败enableVideo()
public abstract void call2(java.lang.String account, AVChatType callType, AVChatNotifyOption notifyOption, AVChatCallback<AVChatData> callback)
信令层发起双人通话
在信令层发起呼叫, 成功调用此接口后对方会收到相应的会话通知。 在呼叫过程中需要上层实现定时器, 当超过一定时间对方未接听时
需要 hangUp2(long, AVChatCallback)
挂断会话。
在发起会话时有几个比较重要可选字段:
AVChatNotifyOption.extendMessage
附加信息字段, 接听会话的用户会收到此字段。 AVChatNotifyOption.forceKeepCalling
持续呼叫,如果对方不在线也会继续呼叫, 否则会直接返回失败。在调用信令层发起通话接口前需要先调用以下接口:
enableRtc()
enableVideo()
setupLocalVideoRender(IVideoRender, boolean, int)
startVideoPreview()
setParameters(AVChatParameters)
,account
- 对方用户账号callType
- 通话类型:语音、视频notifyOption
- 可选通知参数callback
- 回调函数,返回 AVChatData
accept2(long, AVChatCallback)
,
hangUp2(long, AVChatCallback)
public abstract void accept2(long chatId, AVChatCallback<java.lang.Void> callback)
信令层接听双人通话
在程序启动时需要注册 observeIncomingCall(Observer, boolean)
, 这样在有其他用户
呼叫时将会收到来电通知, 收到来电通知后一般会有相应的界面展示, 如果需要接听电话那个需要调用此接口, 如果需要拒绝通话请调用
hangUp2(long, AVChatCallback)
。
在成功接听会话后, 引擎就会自动去连接预先分配好的媒体服务器。 连接媒体服务器的结果将会在
AVChatStateObserverLite.onJoinedChannel(int, String, String, int)
中进行通知。
在调用信令层接听会话接口前需要先调用以下接口:
enableRtc()
enableVideo()
setupLocalVideoRender(IVideoRender, boolean, int)
startVideoPreview()
setParameters(AVChatParameters)
chatId
- 会话IDcallback
- 回调函数,返回接听后,本地音视频设备启动是否成功。
回调onSuccess表示成功;回调onFailed表示失败,错误码-1表示初始化引擎失败,需要重试。
注意:由于音视频引擎析构需要时间,请尽可能保持上一次通话挂断到本次电话接听时间间隔在2秒以上,否则有可能在接听时出现初始化引擎失败(code = -1)call2(String, AVChatType, AVChatNotifyOption, AVChatCallback)
,
hangUp2(long, AVChatCallback)
public abstract void hangUp2(long chatId, AVChatCallback<java.lang.Void> callback)
信令层挂断或者拒绝通话请求
在程序启动时需要注册 observeIncomingCall(Observer, boolean)
, 这样在有其他用户
呼叫时将会收到来电通知, 收到来电通知后一般会有相应的界面展示, 如果需要拒绝电话调用此接口, 如果需要接听通话请调用
accept2(long, AVChatCallback)
。
如果在通话过程中调用此接口,则会直接挂断通话, 同时对方会收到你挂断通知信令。
此接口仅仅是信令层的挂断,如果需要销毁引擎释放资源需要调用以下接口:
stopVideoPreview()
()}disableVideo()
}disableRtc()
chatId
- 会话ID。发起通话和被叫通知都有会话ID通知,挂断时需要制定会话ID,如果在呼叫过程中还没有返回会话ID, 则传入0能够挂断正在呼叫的会话。callback
- 回调函数call2(String, AVChatType, AVChatNotifyOption, AVChatCallback)
,
accept2(long, AVChatCallback)
public abstract void createRoom(java.lang.String roomName, java.lang.String extraMessage, AVChatCallback<AVChatChannelInfo> callback)
创建多人通话房间
如果你需要使用多人会议和互动直播相关功能, 需要通过此接口创建一个多人房间,
然后通过 joinRoom2(String, AVChatType, AVChatCallback)
来加入房间。
房间创建成功后会一直保留, 尽量即时使用, 目前有效期为一个月, 超过有效期后再次加入房间会失败。
如果一个房间已经被创建, 那么再次创建时会返回失败, 提示房间已经存在。
房间创建时机不受音视频通话流程限制, 你可以在任意时间预定自己的多人会议房间。创建成功后即可通知所有会议参与者加入此房间,
你将会在 AVChatStateObserverLite.onUserJoined(String)
中陆续收到不同的用户加入会议。
roomName
- 房间名extraMessage
- 自定义的扩展消息, 其它加入房间的用户都会收到callback
- 创建房间回调接口AVChatResCode.ERROR_CREATE_ROOM_ALREADY_EXIST
,
createRoom(String, String, AVChatCallback)
,
joinRoom2(String, AVChatType, AVChatCallback)
,
leaveRoom2(String, AVChatCallback)
public abstract void createRoom(java.lang.String roomName, java.lang.String extraMessage, java.util.List<AVChatLiveTaskConfig> liveConfigList, AVChatCallback<AVChatChannelInfo> callback)
创建多人通话房间并设置直播推流相关的参数
如果你需要使用多人会议和互动直播相关功能, 需要通过此接口创建一个多人房间,
然后通过 joinRoom2(String, AVChatType, AVChatCallback)
来加入房间。
房间创建成功后会一直保留, 尽量即时使用, 目前有效期为一个月, 超过有效期后再次加入房间会失败。
如果一个房间已经被创建, 那么再次创建时会返回失败, 提示房间已经存在。
房间创建时机不受音视频通话流程限制, 你可以在任意时间预定自己的多人会议房间。创建成功后即可通知所有会议参与者加入此房间,
你将会在 AVChatStateObserverLite.onUserJoined(String)
中陆续收到不同的用户加入会议。
roomName
- 房间名extraMessage
- 自定义的扩展消息, 其它加入房间的用户都会收到liveConfigList
- 直播推流相关的配置,可以同时配置多种Config,推多路不同的流,如果不需要推流,填 null 即可 。AVChatParameters.KEY_SESSION_LIVE_MODE
开关callback
- 创建房间回调接口AVChatLiveTaskConfig
,
AVChatParameters.KEY_SESSION_LIVE_MODE
,
AVChatResCode.ERROR_CREATE_ROOM_ALREADY_EXIST
,
createRoom(String, String, List, AVChatCallback)
,
joinRoom2(String, AVChatType, AVChatCallback)
,
leaveRoom2(String, AVChatCallback)
public abstract void joinRoom2(java.lang.String roomName, AVChatType callType, AVChatCallback<AVChatData> callback)
加入已经预先创建的多人会议房间
加入一个多人会议房间前需要调用以下接口:
enableRtc()
enableVideo()
setupLocalVideoRender(IVideoRender, boolean, int)
startVideoPreview()
setParameters(AVChatParameters)
当你成功加入会议后, 你会收到 AVChatStateObserverLite.onUserJoined(String)
来通知目前会议室内已经存在的用户。
在离开房间时需要调用 leaveRoom2(String, AVChatCallback)
。
多人会议的加入其他用户是不会收到信令层的通知,只能通过媒体层的通知来获取用户加入 AVChatStateObserverLite.onUserJoined(String)
。
如果你的产品加入多人会议是为了进行互动直播, 那么你还需要额外设置以下参数 setParameter(AVChatParameters.Key, Object)
:
AVChatParameters.KEY_SESSION_LIVE_MODE
AVChatParameters.KEY_SESSION_LIVE_URL
roomName
- 房间名callType
- 房间通话类型callback
- 加入房间回调接口createRoom(String, String, AVChatCallback)
,
leaveRoom2(String, AVChatCallback)
public abstract void leaveRoom2(java.lang.String roomName, AVChatCallback<java.lang.Void> callback)
离开加入的多人会议房间
此接口仅仅是离开多人会话房间,如果需要销毁引擎释放资源需要调用以下接口:
stopVideoPreview()
()}disableVideo()
}disableRtc()
多人会议的离开其他用户是不会收到信令层的通知,只能通过媒体层的通知来获取用户离开 AVChatStateObserverLite.onUserLeave(String, int)
。
roomName
- 房间名callback
- 离开房间的回调接口createRoom(String, String, AVChatCallback)
,
joinRoom2(String, AVChatType, AVChatCallback)
public abstract void sendControlCommand(long chatId, byte controlCommand, AVChatCallback<java.lang.Void> callback)
通用信令消息发送
在通话过程中, 你可以发送信令消息通知到房间内的其他用户。
当用户注册了 observeControlNotification(Observer, boolean)
监听器后都会
收到你发送的信令消息。
SDK内部定义了一些通用信令,参考 AVChatControlCommand
, 通过这些信令能够实现 正忙发送, 音视频通话模式切换等常用功能。
如果你需要实现属于自己的信令, 可以在 AVChatControlCommand.NOTIFY_CUSTOM_BASE
基础上去定义自己的信令。
信令的发送和接收仅仅是消息的透传, 它不会影响SDK内部任何逻辑。如果你需要对接收到的指令进行响应, 请调用相关其他引擎接口。
chatId
- 会话IDcontrolCommand
- 控制命令值callback
- 回调函数AVChatControlCommand
public abstract long getCurrentChatId()
获取当前会话ID
每通会话都会有一个唯一的ID, 同时SDK仅同时允许一通会话进行。 如果当前有会话正在进行,通过此接口能获取到其会话ID。
在 call2(String, AVChatType, AVChatNotifyOption, AVChatCallback)
accept2(long, AVChatCallback)
接口成功回调时会告知用户当前会话ID。
public abstract java.lang.Long getUidByAccount(java.lang.String account)
public abstract boolean setChannelProfile(int profile)
语音通话模式设置
在通话前可以设置本次通话的语音模式, 目前支持两种种语音模式。
AVChatChannelProfile.CHANNEL_PROFILE_DEFAULT
默认语音通话模式AVChatChannelProfile.CHANNEL_PROFILE_HIGH_QUALITY_MUSIC
高清音乐模式注意:高清音乐模式仅限耳机场景下使用 , 其他场景可能导致音频质量不佳
profile
- 通话场景.true
方法调用成功,false
方法调用失败AVChatChannelProfile
public abstract boolean setVideoQualityStrategy(int strategy)
视频质量调整策略设置
目前视频调整支持三种模式:
strategy
- 策略类型 AVChatVideoQualityStrategy
true
方法调用成功,false
方法调用失败AVChatVideoQualityStrategy
public abstract boolean setupVideoCapturer(AVChatVideoCapturer videoCapturer)
设置视频数据源
在进行视频通话时需要设置一个可用的视频数据源,该方法需要在startVideoPreview()
前调用。
目前SDK支持多种视频数据源:
AVChatVideoCapturerFactory.createCameraPolicyCapturer(boolean)
创建一个摄像头数据源。AVChatExternalVideoCapturer
。videoCapturer
- 视频数据源true
方法调用成功,false
方法调用失败AVChatCameraCapturer
,
AVChatVideoCapturerFactory.createCameraPolicyCapturer(boolean)
,
AVChatExternalVideoCapturer
public abstract boolean startVideoPreview()
开启本地视频预览
开启视频预览前需要调用 enableVideo()
打开视频模块,同时设置视频数据源 setupVideoCapturer(AVChatVideoCapturer)
。
如果需要绘制视频内容需要调用 setupLocalVideoRender(IVideoRender, boolean, int)
设置本地预览画布。
true
方法调用成功,false
方法调用失败public abstract boolean stopVideoPreview()
关闭本地视频预览
在视频通话时,可以随时调用视频画面预览。调用此方法后,视频本地预览和视频数据发送都会停止。
true
方法调用成功,false
方法调用失败public abstract void setParameters(AVChatParameters params) throws java.lang.IllegalArgumentException
AVChatParameters.Key#type()
。
参数可设置时机参考 AVChatParameters.Key#runtime()
,支持 runtime
代表通话过程中可操作,不支持则仅能通话前操作。
参数是否可设置参考 AVChatParameters.Key#writable()
, 支持 writable
代表能够设置参数值,不支持则仅能获取参数值。params
- 设置参数java.lang.IllegalArgumentException
- 参数值非法或者参数不支持运行时设置AVChatParameters
,
AVChatParameters.Key
,
AVChatMediaCodecMode
,
AVChatAudioEffectMode
public abstract <T> void setParameter(AVChatParameters.Key<T> key, T value) throws java.lang.IllegalArgumentException
AVChatParameters.Key#type()
。
参数可设置时机参考 AVChatParameters.Key#runtime()
,支持 runtime
代表通话过程中可操作,不支持则仅能通话前操作。
参数是否可设置参考 AVChatParameters.Key#writable()
, 支持 writable
代表能够设置参数值,不支持则仅能获取参数值。T
- 参数数据类型key
- 参数Keyvalue
- 参数值java.lang.IllegalArgumentException
- 参数值非法或者参数不支持运行时设置AVChatParameters
,
AVChatParameters.Key
,
AVChatMediaCodecMode
,
AVChatAudioEffectMode
public abstract AVChatParameters getParameters(AVChatParameters params)
AVChatParameters.Key#type()
。
参数可设置时机参考 AVChatParameters.Key#runtime()
,支持 runtime
代表通话过程中可操作,不支持则仅能通话前操作。
参数是否可设置参考 AVChatParameters.Key#writable()
, 支持 writable
代表能够设置参数值,不支持则仅能获取参数值。params
- 需要获取的参数, null
则是取所有参数AVChatParameters
,
AVChatParameters.Key
,
AVChatMediaCodecMode
,
AVChatAudioEffectMode
public abstract <T> T getParameter(AVChatParameters.Key<T> key)
AVChatParameters.Key#type()
。
参数可设置时机参考 AVChatParameters.Key#runtime()
,支持 runtime
代表通话过程中可操作,不支持则仅能通话前操作。
参数是否可设置参考 AVChatParameters.Key#writable()
, 支持 writable
代表能够设置参数值,不支持则仅能获取参数值。T
- 参数类型key
- 参数KeyAVChatParameters
,
AVChatParameters.Key
,
AVChatMediaCodecMode
,
AVChatAudioEffectMode
public abstract boolean isLocalAudioMuted()
true
本地语音静音,false
本地语音未静音muteLocalAudio(boolean)
public abstract boolean isLocalVideoMuted()
true
本地视频暂停,false
本地视频未暂停public abstract void muteLocalAudio(boolean muted)
muted
- true
静音本地语音,false
取消本地语音静音@Deprecated public abstract void muteLocalVideo(boolean muted)
muted
- true
不发送本地视频流,false
发送本地视频流public abstract void setSpeaker(boolean enable)
enable
- true
打开扬声器,false
关闭扬声器public abstract boolean speakerEnabled()
true
扬声器已打开,false
扬声器未打开public abstract void setMicrophoneMute(boolean mute)
mute
- 麦克风是否静音public abstract boolean isMicrophoneMute()
public abstract void muteRemoteAudio(java.lang.String account, boolean muted)
account
- 用户账号muted
- true
不解码播放远端语音流,false
解码播放远端语音流public abstract void muteAllRemoteAudio(boolean muted)
muted
- true
不解码播放远端语音流,false
解码播放远端语音流public abstract void selectAudioDevice(int audioDevice)
AVChatStateObserverLite.onAudioDeviceChanged(int, java.util.Set<java.lang.Integer>, boolean)
audioDevice
- AVChatAudioDevice
@Deprecated public abstract void muteRemoteVideo(java.lang.String account, boolean muted)
AVChatManager.unsubscribeVideo(String account)
、AVChatManager.subscribeVideo(String account, int videoType)
account
- 用户账号muted
- true
不解码绘制远端视频流,false
解码绘制远端视频流public abstract boolean isRemoteAudioMuted(java.lang.String account)
account
- 用户账号true
解码播放远端语音流,false
不解码播放远端语音流public abstract boolean isAllRemoteAudioMuted()
true
解码播放远端语音流,false
不解码播放远端语音流public abstract boolean isRemoteVideoMuted(java.lang.String account)
account
- 用户账号true
解码绘制远端视频流,false
不解码绘制远端视频流public abstract boolean setupLocalVideoRender(IVideoRender render, boolean mirror, int scalingType)
AVChatStateObserver#onCallEstablished
后调用.render
- 画布. AVChatSurfaceViewRenderer
, AVChatExternalVideoRender
, AVChatTextureViewRenderer
mirror
- 绘制是否镜像, 设置画布为 AVChatSurfaceViewRenderer
时有效scalingType
- 绘制模式, 设置画布为 AVChatSurfaceViewRenderer
时有效true
方法调用成功,false
方法调用失败AVChatVideoScalingType
public abstract boolean setupRemoteVideoRender(java.lang.String account, IVideoRender render, boolean mirror, int scalingType)
AVChatStateObserver#onUserJoined
后调用.account
- 用户账号render
- 画布, AVChatSurfaceViewRenderer
, AVChatExternalVideoRender
, AVChatTextureViewRenderer
mirror
- 绘制是否镜像, 设置画布为 AVChatSurfaceViewRenderer
时有效scalingType
- 绘制模式, 设置画布为 AVChatSurfaceViewRenderer
时有效true
方法调用成功,false
方法调用失败AVChatVideoScalingType
public abstract void observeIncomingCall(Observer<AVChatData> observer, boolean register)
accept2(long, AVChatCallback)
来接听电话,
或者 hangUp2(long, AVChatCallback)
来挂断电话。 通常在收到来电请求时,上层需要维持
一个超时器,当超过一定时间没有操作时直接调用 hangUp2(long, AVChatCallback)
来挂断。
当用户当前有电话在进行时,如果收到来电请求,需要选择是接听当前电话和是继续原来的通话。如果接听当前来电,则需要
hangUp2(long, AVChatCallback)
原来进行的电话,然后 accept2(long, AVChatCallback)
当前来电。 如果选择继续原来的通话,挂断当前来电,最好能够先发送一个正忙的指令给对方 sendControlCommand(long, byte, AVChatCallback)
,
然后在再挂断 hangUp2(long, AVChatCallback)
当前通话。
observer
- 观察者,参数为被叫通话的基本信息register
- true
注册监听,false
注销监听public abstract void observeAVChatState(AVChatStateObserverLite observer, boolean register)
AVChatStateObserverLite
进行通知。observer
- 观察者,参数为通话状态回调register
- true
注册监听,false
注销监听public abstract void observeCalleeAckNotification(Observer<AVChatCalleeAckEvent> observer, boolean register)
observer
- 观察者, 参数为接收到的网络通话的通知消息register
- true
注册监听,false
注销监听public abstract void observeOnlineAckNotification(Observer<AVChatOnlineAckEvent> observer, boolean register)
observer
- 观察者,参数为同时在线的其他端响应主叫方的同步通知register
- true
注册监听,false
注销监听public abstract void observeHangUpNotification(Observer<AVChatCommonEvent> observer, boolean register)
observer
- 观察者, 参数为接收到的网络通话的挂断消息register
- true
注册监听,false
注销监听public abstract void observeControlNotification(Observer<AVChatControlEvent> observer, boolean register)
会话相关的控制指令通知,用户可以自定义私有的控制指令。
observer
- 观察者, 参数为接收到的网络通话控制消息register
- true
注册监听,false
注销监听public abstract void rate(int rate, java.lang.String description)
rate
- 0~5分description
- 通话描述信息