频道事件回调 编辑文档

功能描述

通过频道事件回调可以监听和报告指定频道的事件和数据。

接口描述

public interface ChannelObserver {
/**
* 自己加入成功,实现加入频道成功的逻辑
* @param roomName 频道名字
* @param uid 用户id。如果用户加入频道前没有设置id,这位服务器自动分配的id
* @param role 加入频道的角色。TALKER表示主播,可说可听;AUDIENCE表示听众,只能听不能说
* @param muted 加入频道的静音状态。0表示未静音,1表示静音
*/
void onJoinSuccess(String roomName, long uid, ChannelRole role, boolean muted);


/**
* 断线重新加入频道成功的逻辑
* @param roomName 频道名字
* @param uid 用户id。如果用户加入频道前没有设置id,这位服务器自动分配的id
* @param role 加入频道的角色。TALKER表示主播,可说可听;AUDIENCE表示听众,只能听不能说
* @param muted 加入频道的静音状态。0表示未静音,1表示静音
*/
void onReJoinSuccess(String roomName, long uid, ChannelRole role, boolean muted);

/**
* 其他用户加入,实现别人进入频道的逻辑
* @param uid 加入频道的用户id
* @param role 加入频道的角色。TALKER表示主播,可说可听;AUDIENCE表示听众,只能听不能说
* @param muted 加入频道的静音状态。0表示未静音,1表示静音
*/
void onOtherJoin(long uid, ChannelRole role, boolean muted);

/**
* 自己加入失败,实现加入频道失败的逻辑
* @param code 失败状态
* @param message 失败信息
*/
void onJoinFail(int code, String message);

/**
* 网络打断
*/
void onConnectionBreak();

/**
* 网络失去连接
*/
void onConnectionLost();

/**
* 运行过程中的错误信息,SDK无法自行恢复。一般情况下应用需要提示用户并进行对应的处理。
* @param err 错误码
* @param message 错误描述
*/
void onError(int err, String message);

/**
* 运行过程中的警告信息,通常是网络或者音频设备相关的。一般情况下应用可以忽略,SDK会自己尝试恢复。
* @param warn 警告码
* @param message 警告描述
*/
void onWarning(int warn, String message);

/**
* 实现退出频道的逻辑
*/
void onLeave();

/**
* 其他用户离开,实现别人离开频道的逻辑
* @param uid 离开频道用户的id
* @param role 离开频道用户的角色
*/
void onOtherLeave(long uid, ChannelRole role);

/**
* 用户音量提示
* @param volumeInfos 用户音量信息集合
* @param size volumeInfos中用户个数
*/
void onTalkingVolumeIndication(VolumeInfo[] volumeInfos, int size);

/**
* 用户mute状态,实现静音状态改变的逻辑
* @param uid 用户id。如果为0,表示自己静音状态,否则表示他人静音状态
* @param muted 0表示未静音,1表示静音
*/
void onMuteStatusChanged(long uid, boolean muted);

/**
* 用户角色状态,实现角色状态改变的逻辑
* @param uid 用户id。如果为0,表示自己角色状态,否则表示他人角色状态
* @param role TALKER表示主播,可说可听;AUDIENCE表示听众,只能听不能说
*/
void onRoleStatusChanged(long uid, ChannelRole role);

/**
* 当前通话网络统计回调,通话中每两秒触发一次
* @param uid 用户ID。表示该ID的用户的网络质量,如果为0,表示本地用户的网络质量
* @param txQuality 该用户的上行网络质量
* @param rxQuality 该用户的下行网络质量
* @param stat 通话相关的统计信息
*/
void onNetworkStats(long uid, int txQuality, int rxQuality, RtcStat stat);

/**
* 语音路由变更
* @param route 路由类型:0,扬声器;2,有线耳机;3,蓝牙设备
*/
void onAudioRouteChanged(int route);

/**
* 音乐文件播放状态发生改变
* @param state 播放状态
*/
void onSoundStateChanged(int state);

/**
* 音效文件播放完毕
* @param effectId 音效Id
*/
void onEffectFinished(int effectId);
}

示例代码

ChannelObserver channelObserver = new ChannelObserver() {
@Override
public void onJoinSuccess(String roomName, long uid, ChannelRole role, boolean muted) {
Log.d("qtt_rtc", "加入频道成功 roomId:" + roomName + " uid:" + uid + " role:" + role + " ");
}

@Override
public void onReJoinSuccess(String roomName, long uid, ChannelRole role, boolean muted) {
Log.d("qtt_rtc", "重新加入频道成功 roomId:" + roomName + " uid:" + uid + " role:" + role + " ");
}

@Override
public void onOtherJoin(long uid, ChannelRole role, boolean muted) {
Log.d("qtt_rtc", "uid " + uid + " 加入频道 role:" + role);
}

@Override
public void onJoinFail(final int code, final String message) {
Log.d("qtt_rtc", "加入频道失败 " + message);
}

@Override
public void onConnectionBreak() {
Log.d("qtt_rtc", "网络打断");
}

@Override
public void onConnectionLost() {
Log.d("qtt_rtc", "网络失去连接");
}

@Override
public void onError(int err, String message) {
Log.d("qtt_rtc", "错误消息 " + message);
}

@Override
public void onWarning(int warn, String message) {
Log.d("qtt_rtc", "警告消息 " + message);;
}

@Override
public void onLeave() {
Log.d("qtt_rtc", "离开频道");
}

@Override
public void onOtherLeave(long uid, ChannelRole role) {
Log.d("qtt_rtc", "远端用户离开频道 " + uid);
}

@Override
public void onTalkingVolumeIndication(VolumeInfo[] volumeInfos, int size) {
Log.d("qtt_rtc", "用户说话");
}

@Override
public void onMuteStatusChanged(long uid, boolean muted) {
if (uid == 0) {
Log.d("qtt_rtc", "自己静麦状态变化: " + muted);
} else {
Log.d("qtt_rtc", "远端用户 " + uid + " 静麦状态变化: " + muted);
}
}

@Override
public void onRoleStatusChanged(long uid, ChannelRole role) {
if (uid == 0) {
Log.d("qtt_rtc", "自己角色状态变化: " + role);
} else {
Log.d("qtt_rtc", "远端用户 " + uid + " 角色状态变化: " + role);
}
}
@Override
public void onNetworkStats(long uid, int txQuality, int rxQuality, RtcStat stat) {
if (uid == 0) {
Log.d("qtt_rtc", "自己网络情况:上行质量 " + txQuality + " 下行质量 " + rxQuality + " 上行丢包 " + stat.mUpLossRate + " 下行丢包 " + stat.mDownLossRate + " 端到端时延 " + stat.mRttAverage + " 抖动 " + stat.mJitter);
} else {
Log.d("qtt_rtc", "uid: " + uid + " 用户网络情况:上行质量 " + txQuality + " 下行质量 " + rxQuality + " 上行丢包 " + stat.mUpLossRate + " 下行丢包 " + stat.mDownLossRate + " 端到端时延 " + stat.mRttAverage + " 抖动 " + stat.mJitter);
}
}

@Override
public void onAudioRouteChanged(int route) {
Log.d("qtt_rtc", "音频路由变化");
}

@Override
public void onSoundStateChanged(int state) {
Log.d("qtt_log", "播放音乐状态变化 " + state);
}

@Override
public void onEffectFinished(int effectId) {
Log.d("qtt_log", "音效播放完成 " + effectId);
}
};

ChannelEngine channelEngine = ChannelEngine.GetChannelInstance(getApplicationContext(),"your appkey",channelObserver);
野狗新手?
立即注册,为你提供安全可靠的实时通信云服务。
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题