一对一视频通话(VOIP)

7.1 获取XHVoipManager实例,添加VOIP事件监听

XHVoipManager voipManager = XHClient.getInstance().getVoipManager();
voipManager.addListener(new IXHVoipManagerListener() {
@Override
public void onCalling(String fromID) {
//正在被fromID呼叫
}

@Override
public void onAudioCalling(String fromID) {
//正在被fromID语音呼叫
}

@Override
public void onCancled(String fromID) {
//fromID已经取消呼叫
}

@Override
public void onRefused(String fromID) {
//fromID拒接接听
}

@Override
public void onBusy(String fromID) {
//fromID线路正忙
}

@Override
public void onMiss(String fromID) {
//错过的呼叫(通话中其他人来电)
}

@Override
public void onConnected(String fromID) {
//fromID已经接听
}

@Override
public void onHangup(String fromID) {
//fromID已经挂断
}

@Override
public void onError(String errorCode) {
//VOIP报错,errorCode=错误信息
}

@Override
public void onReceiveRealtimeData(byte[] data) {
//接收到实时白板数据
}

@Override
public void onTransStateChanged(int state) {
//传输状态改变 0:服务器中转 1:P2P直连
}
});

7.2 XHVoipManager API 说明

/**
* 添加VOIP事件监听
* @param voipManagerListener IXHVoipManagerListener 接收VOIP相关事件
*/
void addListener(IXHVoipManagerListener voipManagerListener);

/**
* 设置媒体类型(音视频,音频,视频 三种可选)
* @param mediaTypeEnum 媒体类型
*/
void setRtcMediaType(XHConstants.XHRtcMediaTypeEnum mediaTypeEnum);
/**
* 获取媒体类型(音视频,音频,视频 三种可选)
*/
XHConstants.XHRtcMediaTypeEnum getRtcMediaType();

/**
* 切换摄像头方向
*/
void switchCamera();

/**
* 切换摄像头
* @param cameraId 指定的摄像头ID
*/
void switchCamera(int cameraId);

/**
* 设置显示双方画面的Player,不需要显示视频时可以传null
* @param selfPlayer 己方的view
* @param targetPlayer 对方的View
* @param callback 结果回调
*/
void setupView(StarPlayer selfPlayer, StarPlayer targetPlayer, IXHResultCallback callback);

/**
* 主叫方调用
* 发起通话
* @param context Context
* @param toID 被叫方ID
* @param callback 结果回调,成功时将返回sessionID,用于服务端录像记录查询
*/
void call(Context context,String toID, IXHResultCallback callback);

/**
* 主叫方调用
* 发起语音通话
* @param context Context
* @param toID 被叫方ID
* @param callback 结果回调,成功时将返回sessionID,用于服务端录像记录查询
*/
void audioCall(Context context,String toID, IXHResultCallback callback);

/**
* 取消呼叫(主叫方调用)
* 对方接听或拒绝前 主叫方主动取消呼叫
* @param callback
*/
void cancel(IXHResultCallback callback);

/**
* 同意跟主叫方通话(被叫方调用)
* @param context Context
* @param fromID 对方ID
* @param callback 结果回调,成功时将返回sessionID,用于服务端录像记录查询
*/
void accept(Context context,String fromID, IXHResultCallback callback);

/**
* 拒绝跟主叫方通话(被叫方调用)
* @param callback 结果回调
*/
void refuse(IXHResultCallback callback);

/**
* 挂断
* @param callback 结果回调
*/
void hangup(IXHResultCallback callback);

/**
* 动态开关音频,直播过程中可随时开关音频,直播结束后状态自动重置。
*/
void setAudioEnable(Boolean enable);

/**
* 动态开关视频,直播过程中可随时开关视频,直播结束后状态自动重置。
*/
void setVideoEnable(Boolean enable);

/**
* 设置recorder
* @param recorder
*/
void setRecorder(IXHRecorder recorder);

/**
* 切换recorder
* @param recorder
*/
void resetRecorder(IXHRecorder recorder);