开通方式

音视频服务开通,请参考音视频开通方式说明。

使用说明

由于底层引擎技术不同,2.6.0 之后的音视频 SDK 与 2.6.0 之前的 SDK 中的实时音视频不能互通。

音视频 SDK 为商用收费功能,之前的 SDK 中的实时音视频为免费测试功能,如果您还想使用之前的实时音视频,可以使用 2.5.2 版本,2.6.0 之后的音视频服务使用说明如下:

集成说明

1、 首先请参考官网文档集成 CallLib SDK 。

2、 使用融云通话之前,必须先初始化 SDK 和连接服务器,详细内容可以参考IMLib 快速集成文档。

快速集成发起通话

您可以调用RongCallClient下面接口发起通话。

/***发起一个通话*@paramconversationType会话类型*@paramtargetId目标会话id*@paramuserIds邀请参与通话的用户ID列表*@parammediaType发起的通话媒体类型*@paramextra附加信息*@return呼叫id*/publicStringstartCall(Conversation.ConversationTypeconversationType,StringtargetId,List<String>userIds,RongCallCommon.CallMediaTypemediaType,Stringextra);设置通话来电监听

RongCallClient.setReceivedCallListener(newIRongReceivedCallListener(){/***来电回调*@paramcallSession通话实体*/@OverridepublicvoidonReceivedCall(RongCallSessioncallSession){//acceptorhangupthecall}/***targetSDKVersion>=23时检查权限的回调。当targetSDKVersion<23的时候不需要实现。*在这个回调里用户需要使用Android6.0新增的动态权限分配接口requestCallPermissions通知用户授权,*然后在onRequestPermissionResult回调里根据用户授权或者不授权分别回调*RongCallClient.getInstance().onPermissionGranted()和*RongCallClient.getInstance().onPermissionDenied()来通知CallLib。*其中audiocall需要获取Manifest.permission.RECORD_AUDIO权限;*videocall需要获取Manifest.permission.RECORD_AUDIO和Manifest.permission.CAMERA两项权限。*@paramcallSession通话实体*/@OverridepublicvoidonCheckPermission(RongCallSessioncallSession){}});接听和挂断通话

您可以调用 RongCallClient 下面接口接听和挂断通话。

/***接听通话*@paramcallId呼叫id,可以从来电监听的callSession中获取*/publicvoidacceptCall(StringcallId);

/***挂断通话*@paramcallId呼叫id,可以从来电监听的callSession中获取*/publicvoidhangUpCall(StringcallId);会话是否支持发起通话--call_conversation--

目前,SDK 支持在单聊中发起单人通话,在讨论组中发起多人通话。

您可以通过RongCallClient的下面接口查询当前会话类型的通话能力。

/***当前会话类型是否支持音频通话。*@paramtype会话类型*@returntrue:支持;false:不支持*/publicbooleanisAudioCallEnabled(Conversation.ConversationTypetype);/***当前会话类型是否支持视频通话。*@paramtype会话类型*@returntrue:支持;false:不支持*/publicbooleanisVideoCallEnabled(Conversation.ConversationTypetype);获取当前的通话实体

您可以通过RongCallClient的下面接口获取当前的通话实体,通话实体中维护着当前通话的所有信息。

/***获取当前通话实体,通话实体中维护着当前通话的所有信息。*@return当前通话实体*/publicRongCallSessiongetCallSession();邀请用户加入当前通话

您可以通过 RongCallClient 的下面接口邀请用户加入当前通话(仅限讨论组和群组)。

/***邀请用户加入当前通话(仅限讨论组和群组)*@paramcallId通话id*@paramuserIds邀请的用户id列表*/publicvoidaddParticipants(StringcallId,List<String>userIds);通话过程中的媒体接口

您可以通过RongCallClient的下面接口进行媒体类的操作。

/***切换audio,video通话*@parammediaType要切换的媒体类型:audio、video*/publicvoidchangeCallMediaType(RongCallCommon.CallMediaTypemediaType);/***前后摄像头切换*/publicvoidswitchCamera();/***设置是否打开本地摄像头*@paramenabledtrue:打开摄像头;false:关闭摄像头。*/publicvoidsetEnableLocalVideo(booleanenabled);/***设置是否打开本地音频*@paramenabledtrue:打开本地音频false:关闭本地音频*/publicvoidsetEnableLocalAudio(booleanenabled);/***设置是否打开免提*@paramenabledtrue:打开免提false:关闭免提*/publicvoidsetEnableSpeakerphone(booleanenabled);设置通话状态的回调

您需要设置通话状态的回调,来监听通话状态的变化。

RongCallClient.getInstance().setVoIPCallListener(newIRongCallListener(){/***电话已拨出。*主叫端拨出电话后,通过回调onCallOutgoing通知当前call的详细信息。**@paramcallSession通话实体。*@paramlocalVideo本地camera信息。*/@OverridepublicvoidonCallOutgoing(RongCallSessioncallSession,SurfaceViewlocalVideo){}/***已建立通话。*通话接通时,通过回调onCallConnected通知当前call的详细信息。**@paramcallSession通话实体。*@paramlocalVideo本地camera信息。*/@OverridepublicvoidonCallConnected(RongCallSessioncallSession,SurfaceViewlocalVideo){}/***通话结束。*通话中,对方挂断,己方挂断,或者通话过程网络异常造成的通话中断,都会回调onCallDisconnected。**@paramcallSession通话实体。*@paramreason通话中断原因。*/@OverridepublicvoidonCallDisconnected(RongCallSessioncallSession,RongCallCommon.CallDisconnectedReasonreason){}/***被叫端正在振铃。*主叫端拨出电话,被叫端收到请求,发出振铃响应时,回调onRemoteUserRinging。**@paramuserId振铃端用户id。*/@OverridepublicvoidonRemoteUserRinging(StringuserId){}/***被叫端加入通话。*主叫端拨出电话,被叫端收到请求后,加入通话,回调onRemoteUserJoined。**@paramuserId加入用户的id。*@parammediaType加入用户的媒体类型,audioorvideo。*@paramremoteVideo加入用户者的camera信息。*/@OverridepublicvoidonRemoteUserJoined(StringuserId,RongCallCommon.CallMediaTypemediaType,SurfaceViewremoteVideo){}/***通话中的某一个参与者,邀请好友加入通话,发出邀请请求后,回调onRemoteUserInvited。**@paramuserId被邀请者的id。*@parammediaType被邀请者的id。*/@OverridepublicvoidonRemoteUserInvited(StringuserId,RongCallCommon.CallMediaTypemediaType){}/***通话中的远端参与者离开。*回调onRemoteUserLeft通知状态更新。**@paramuserId远端参与者的id。*@paramreason远端参与者离开原因。*/@OverridepublicvoidonRemoteUserLeft(StringuserId,RongCallCommon.CallDisconnectedReasonreason){}/***当通话中的某一个参与者切换通话类型,例如由audio切换至video,回调onMediaTypeChanged。**@paramuserId切换者的userId。*@parammediaType切换者,切换后的媒体类型。*@paramvideo切换着,切换后的camera信息,如果由video切换至audio,则为null。*/@OverridepublicvoidonMediaTypeChanged(StringuserId,RongCallCommon.CallMediaTypemediaType,SurfaceViewvideo){}/***通话过程中,发生异常。**@paramerrorCode异常原因。*/@OverridepublicvoidonError(RongCallCommon.CallErrorCodeerrorCode){}/***远端参与者camera状态发生变化时,回调onRemoteCameraDisabled通知状态变化。**@paramuserId远端参与者id。*@paramdisabled远端参与者camera是否可用。*/@OverridepublicvoidonRemoteCameraDisabled(StringuserId,booleandisabled){}});