目录
信令
单聊
发起会话
/**
* @param[toAppAccount]: 接收方账号
* @param[toResource]: 用户设备的标识
* @param[appContent]: 可以给接收方携带数据
* @return 通话ID,唯一标识当前流会话
*/
long callId = user.dialCall(String toAppAccount);
long callId = user.dialCall(String toAppAccount, byte[] appContent);
long callId = user.dialCall(String toAppAccount, String toResource);
long callId = user.dialCall(String toAppAccount, String toResource, byte[] appContent);
关闭会话
/**
* @param[callId]: 通话ID
* @param[byeReason]: 描述信息
*/
user.closeCall(long callId);
user.closeCall(long callId, String byeReason);
多聊
创建频道
/**
* @param[extra]: 可携带附加信息
* @return 用于区分创建不同频道
*/
long identity = user.createChannel(byte[] extra);
加入频道
/**
* @param[callId]: 通话ID,唯一标识一个频道会话
* @param[callKey]: 通话密钥,配合callId使用
*/
user.joinChannel(long callId, String callKey);
离开频道
/**
* @param[callId]: 通话ID,唯一标识一个频道会话
* @param[callKey]: 会话密钥,配合callId使用
*/
user.leaveChannel(long callId, String callKey);
数据
初始化音频流配置
/**
* @param[audioStreamConfig]: 音频流配置,该接口如果不调用,内部采用默认配置!
* audioStreamConfig.strategy:发送流策略,支持MIMCStreamConfig.STRATEGY_FEC和MIMCStreamConfig.STRATEGY_ACK(默认)
* audioStreamConfig.ackWaitTimeMs:策略为STRATEGY_ACK时有效,表示发送数据后等待接收发送成功的的响应时间,单位毫秒,默认150ms
* audioStreamConfig.isEncrypt:是否加密,默认false
*/
user.initAudioStreamConfig(MIMCStreamConfig audioStreamConfig);
初始化视频流配置
/**
* @param[videoStreamConfig]: 视频流配置,该接口如果不调用,内部采用默认配置!
* videoStreamConfig.strategy:发送流策略,支持MIMCStreamConfig.STRATEGY_FEC(默认)和MIMCStreamConfig.STRATEGY_ACK
* videoStreamConfig.ackWaitTimeMs:策略为STRATEGY_ACK时有效,表示发送数据后等待接收发送成功的的响应时间,单位毫秒,默认150ms
* videoStreamConfig.isEncrypt:是否加密,默认false
*/
user.initVideoStreamConfig(MIMCStreamConfig videoStreamConfig);
发送数据
/**
* @param[callId]: 通话ID
* @param[data]: 流数据,最大不超过512KB
* @param[dataType]: 数据类型,音频:AUDIO,视频:VIDEO
* @param[dataPriority]: 数据优先级,P0优先级最高,P1次之,P2最低
* @param[canBeDropped]: 是否允许丢包
* @param[resendCount]: 重发次数,针对MIMCStreamConfig.STRATEGY_ACK有效
* @param[channelType]: 通道类型,可指定RELAY,P2P_INTERNET,P2P_INTRANET,不指定优先选择P2P_INTRANET发送数据,次之P2P_INTERNET,最后RELAY,无缝切换
* @param[context]: 用户自定义对象
* @return 成功返回dataId,失败返回-1
*/
int dataId = user.sendRtsData(long callId, byte[] data, RtsDataType dataType, DataPriority dataPriority, boolean canBeDropped, Object context);
int dataId = user.sendRtsData(long callId, byte[] data, RtsDataType dataType, DataPriority dataPriority, boolean canBeDropped, int resendCount, Object context);
int dataId = user.sendRtsData(long callId, byte[] data, RtsDataType dataType, DataPriority dataPriority, boolean canBeDropped, int resendCount, RtsChannelType channelType, Object context);
获取音频流配置
/**
* @return 返回音频流配置
*/
MIMCStreamConfig config = user.getAudioStreamConfig();
获取视频流配置
/**
* @return 返回视频流配置
*/
MIMCStreamConfig config = user.getVideoStreamConfig();
设置发送缓存大小
/**
* @param[size]: 以消息个数为单位
*/
user.setSendBufferSize(int size);
获取发送缓存大小
int size = user.getSendBufferSize();
设置接收缓存大小
/**
* @param[size]: 以消息个数为单位
*/
user.setRecvBufferSize(int size);
获取接收缓存大小
int size = user.getRecvBufferSize();
清空发送缓存
user.clearSendBuffer();
清空接收缓存
user.clearRecvBuffer();
获取发送缓存使用率
float rate = user.getSendBufferUsageRate();
获取接收缓存使用率
float rate = user.getRecvBufferUsageRate();
回调
单聊回调
user.registerRtsCallHandler(MIMCRtsCallHandler rtsCallHandler);
public interface MIMCRtsCallHandler {
/**
* @param[fromAccount]: 发起方账号
* @param[fromResource]: 用户设备的标识
* @param[callId]: 通话ID
* @param[appContent]: 发起方携带的数据
* @return LaunchedResponse,成员accepted表示是否接受会话,成员desc携带描述信息
*/
LaunchedResponse onLaunched(String fromAccount, String fromResource, long callId, byte[] appContent);
/**
* @param[callId]: 通话ID
* @param[accepted]: 接收方同意ture,拒绝false
* @param[desc]: 描述信息
*/
void onAnswered(long callId, boolean accepted, String desc);
/**
* @param[callId]: 通话ID
* @param[desc]: 描述信息
*/
void onClosed(long callId, String desc);
/**
* 接收流数据
* @param[callId]: 通话ID
* @param[fromAccount]: 发送方账号
* @param[resource]: 用户设备的标识
* @param[data]: 流数据
* @param[dataType]: 数据类型,AUDIO,VIDEO
* @param[channelType);]: 通道类型,RELAY、P2P_INTERNET、P2P_INTRANET
*/
void onData(long callId, String fromAccount, String resource, byte[] data, RtsDataType dataType, RtsChannelType channelType);
/**
* 发送流数据成功的回调,仅当流策略配置为MIMCStreamConfig.STRATEGY_ACK时回调
* @param[callId]: 通话ID
* @param[dataId]: 和sendRtsData()返回值对应
* @param[context]: 用户自定义对象,和sendRtsData()中的context对应
*/
void onSendDataSuccess(long callId, int dataId, Object context);
/**
* 发送流数据失败的回调,仅当流策略配置为MIMCStreamConfig.STRATEGY_ACK时回调
* @param[callId]: 通话ID
* @param[dataId]: 和sendRtsData()返回值对应
* @param[context]: 用户自定义对象,和sendRtsData()中的context对应
*/
void onSendDataFailure(long callId, int dataId, Object context);
}
多聊回调
user.registerChannelHandler(MIMCRtsChannelHandler rtsChannelHandler);
public interface MIMCRtsChannelHandler {
/**
* 创建频道回调
* @param[identity]: 创建频道标识,和createChannel()返回值一一对应
* @param[callId]: 通话ID
* @param[callKey]: 通话密钥
* @param[success]: true:成功,false:失败
* @param[desc]: 描述信息
* @param[extra]: 附加信息
*/
void onCreateChannel(long identity, long callId, String callKey, boolean success, String desc, byte[] extra);
/**
* 加入频道回调
* @param[callId]: 通话ID
* @param[appAccount]: 发起方账号
* @param[resource]: 设备的标识
* @param[success]: true:成功,false:失败
* @param[desc]: 描述信息
* @param[extra]: 附加信息
* @param[members]: 频道内所有成员
* ChannelUser.appAccount: 用户账号
* ChannelUser.resource: 用户设备的标识
*/
void onJoinChannel(long callId, String appAccount, String resource, boolean success, String desc, byte[] extra, List<ChannelUser> members);
/**
* 离开频道回调
* @param[callId]: 通话ID
* @param[appAccount]: 发起方账号
* @param[resource]: 设备的标识
* @param[success]: true:成功,false:失败
* @param[desc]: 描述信息
*/
void onLeaveChannel(long callId, String appAccount, String resource, boolean success, String desc);
/**
* 新加入用户回调
* @param[callId]: 通话ID
* @param[appAccount]: 用户账号
* @param[resource]: 设备的标识
*/
void onUserJoined(long callId, String appAccount, String resource);
/**
* 用户离开回调
* @param[callId]: 通话ID
* @param[appAccount]: 用户账号
* @param[resource]: 设备的标识
*/
void onUserLeft(long callId, String appAccount, String resource);
/**
* 接收流数据
* @param[callId]: 通话ID
* @param[fromAccount]: 发送方账号
* @param[resource]: 设备的标识
* @param[data]: 流数据
* @param[dataType]: 数据类型,AUDIO,VIDEO
*/
void onData(long callId, String fromAccount, String resource, byte[] data, RtsDataType dataType);
/**
* 发送流数据成功的回调,仅当流策略配置为MIMCStreamConfig.STRATEGY_ACK时回调
* @param[callId]: 通话ID
* @param[dataId]: 和sendRtsData()返回值对应
* @param[context]: 用户自定义对象,和sendRtsData()中的context对应
*/
void onSendDataSuccess(long callId, int dataId, Object context);
/**
* 发送流数据失败的回调,仅当流策略配置为MIMCStreamConfig.STRATEGY_ACK时回调
* @param[callId]: 通话ID
* @param[dataId]: 和sendRtsData()返回值对应
* @param[context]: 用户自定义对象,和sendRtsData()中的context对应
*/
void onSendDataFailure(long callId, int dataId, Object context);
}