96SEO 2026-02-19 20:04 13
完整封装了拨打、接听、挂断等整套呼叫流程支持一对一及多人音视频通话功能齐全、体验丝滑且契合海外用户的交互偏好。

Key。
在开发者后台系统会自动为新账号创建一个应用。
默认使用国内数据中心并提供开发环境。
如果您已经有融云开发者账号可以直接创建新应用。
https://maven.rongcloud.cn/repository/maven-releases/}}
版本号新集成用户建议使用最新版。
此处以5.6.2版本为例。
implementation
cn.rongcloud.sdk:im_libcore:5.6.2
cn.rongcloud.sdk:callplus_lib:1.0.0//
android:nameandroid.permission.INTERNET
android:nameandroid.permission.ACCESS_NETWORK_STATE
android:nameandroid.permission.CHANGE_NETWORK_STATE
android:nameandroid.permission.ACCESS_WIFI_STATE
android:nameandroid.permission.CAMERA
android:nameandroid.permission.RECORD_AUDIO
android:nameandroid.permission.MODIFY_AUDIO_SETTINGS
!--允许程序访问电话状态如通话中收到来自SIM卡的来电时会将SIM卡通话状态通知给远端用户所以需要该权限--
android:nameandroid.permission.READ_PHONE_STATE
用户使用对应功能时如发起呼叫、接听请求摄像头CAMERA、麦克风RECORD_AUDIO权限。
要想实现通话功能必须以双端都已经成功连接融云为基础参考下图所示
RongCoreClient.init(getApplicationContext(),
传入用户身份令牌Token向融云服务器验证用户身份连接成功后使用
RCCallPlusClient.getInstance().init()
您在申请开发者账号后可以在融云后台北极星位置直接生成用户token
IRongCoreCallback.ConnectCallback()
的调用都在主线程进行所以目前选择在主线程进行初始化。
//todo
的初始化、反初始化和使用以确保操作的一致性。
RCCallPlusConfig
RCCallPlusConfig.Builder.create().build();/***
初始化并设置通话全局配置重复调用该方法时SDK内部会重新初始化*
方法调用后同步返回结果可以在这里得到初始化是否成功*/RCCallPlusResultCode
RCCallPlusClient.getInstance().init(config);}});}/***
onError(IRongCoreEnum.ConnectionErrorCode
onDatabaseOpened(DatabaseOpenStatus
IRCCallPlusResultListener#onStartCall
在发起通话之前需先设置本地和远端视图在对端接听视频通话时本端会自动渲染对端的视图。
打开摄像头采集请提前完成摄像头、麦克风权限的动态申请RCCallPlusClient.getInstance().startCamera();RCCallPlusClient.getInstance().enableMicrophone(true);//设置本端视图setLocalVideoView();//设置对端视图setRemotVideoView(remoteUserId);ListString
ArrayList();userIds.add(remoteUserId);//todo
RCCallPlusType.PRIVATE;//PRIVATE:
RCCallPlusClient#setCallPlusResultListener(IRCCallPlusResultListener)}
IRCCallPlusResultListener#onStartCall(RCCallPlusCode,
List)}方法br*/RCCallPlusClient.getInstance().startCall(userIds,
{//创建本地视图对象RCCallPlusLocalVideoView
RCCallPlusLocalVideoView(this.getApplicationContext());//FIT:
视频帧通过保持宽高比(可能显示黑色边框)来缩放以适应视图的大小localVideoView.setRenderMode(RCCallPlusRenderMode.FIT);//设置本地视图给
SDKRCCallPlusClient.getInstance().setVideoView(localVideoView);FrameLayout.LayoutParams
FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT);params.gravity
Gravity.CENTER_HORIZONTAL;//在父布局中横向居中显示//将本地视图添加到XML中显示//示例代码中
对象mLocalVideoViewFrameLayout.removeAllViews();mLocalVideoViewFrameLayout.addView(localVideoView,
remoteUserId为远端用户userIdRCCallPlusRemoteVideoView
RCCallPlusRemoteVideoView(remoteUserId,
视频帧通过保持宽高比(可能显示黑色边框)来缩放以适应视图的大小remoteVideoView.setRenderMode(RCCallPlusRenderMode.FIT);//因为远端视图显示在最顶层为了防止远端视频视图被底部控件遮挡所以添加如下设置remoteVideoView.setZOrderOnTop(true);remoteVideoView.setZOrderMediaOverlay(true);ListRCCallPlusRemoteVideoView
remoteVideoViewList.add(remoteVideoView);//设置远端视图给SDKRCCallPlusClient.getInstance().setVideoView(remoteVideoViewList);FrameLayout.LayoutParams
FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT);remoteVideoViewParams.gravity
Gravity.CENTER_HORIZONTAL;//将远端视图添加到XML中显示//示例代码中
对象mRemoteVideoViewFrameLayout.removeAllViews();mRemoteVideoViewFrameLayout.addView(remoteVideoView,
RCCallPlusClient.getInstance().hangup()
onReceivedCall(RCCallPlusSession
方法添加通话事件监听提供来电事件、通话状态、通话记录等事件相关回调。
RCCallPlusClient.getInstance().setCallPlusEventListener(new
onReceivedCall(RCCallPlusSession
RCCallPlusClient.getInstance().getCurrentCallSession();if
!TextUtils.equals(callSession.getCallId(),
currentCallSession.getCallId()))
{//可以使用该方法判断出有正在进行中的通话又有第二通通话呼入的情况br//todo
RCCallPlusClient.getInstance().accept
方法中存在UI操作所以切换到主线程执行runOnUiThread(new
打开摄像头采集请提前完成摄像头、麦克风权限的动态申请RCCallPlusClient.getInstance().startCamera();RCCallPlusClient.getInstance().enableMicrophone(true);setLocalVideoView();//复用发起通话逻辑中的
方法showDialog(CallPlusActivity.this,
{RCCallPlusClient.getInstance().hangup();}});}});}Overridepublic
{IRCCallPlusEventListener.super.onCallEnded(session,
{Toast.makeText(CallPlusActivity.this,通话结束callId:
Toast.LENGTH_SHORT).show();}});}/***
onRemoteUserStateChanged(String
{IRCCallPlusEventListener.super.onRemoteUserStateChanged(callId,
);stringBuilder.append(callId).append(
CALLING:stringBuilder.append(呼叫中);break;case
INVITED:stringBuilder.append(被邀请中);break;case
CONNECTING:stringBuilder.append(已接听连接中);break;case
ON_CALL:stringBuilder.append(通话中);break;case
ENDED:stringBuilder.append(通话已结束);break;}Toast.makeText(CallPlusActivity.this,
Toast.LENGTH_SHORT).show();}});}
{setRemoteUserVideoView(callSession.getRemoteUserList());/***
RCCallPlusClient#setCallPlusResultListener(IRCCallPlusResultListener)}
IRCCallPlusResultListener#onAccept(RCCallPlusCode,
String)}方法br*/RCCallPlusClient.getInstance().accept(callSession.getCallId());
setRemoteUserVideoView(ListRCCallPlusUser
RCCallPlusRemoteVideoView(callPlusUser.getUserId(),
false);//视频帧通过保持宽高比(可能显示黑色边框)来缩放以适应视图的大小remoteVideoView.setRenderMode(RCCallPlusRenderMode.FIT);remoteVideoViewList.add(remoteVideoView);//本示例代码中因为远端视图显示在最顶层为了防止远端视频视图被底部控件(视图)遮挡所以添加如下设置remoteVideoView.setZOrderOnTop(true);remoteVideoView.setZOrderMediaOverlay(true);FrameLayout.LayoutParams
FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT);params.gravity
Gravity.CENTER_HORIZONTAL;//todo
将每个远端视图(remoteVideoView)添加到XML中显示远端为多人时需要添加给多个控件显示本示例代码仅展示一个远端用户情况mRemoteVideoViewFrameLayout.removeAllViews();mRemoteVideoViewFrameLayout.addView(remoteVideoView,
若没有为远端用户设置视频渲染视图则不会产生该用户的视频流的下行流量*/RCCallPlusClient.getInstance().setVideoView(remoteVideoViewList);
DialogInterface.OnClickListener
DialogInterface.OnClickListener
AlertDialog.Builder(context);builder
builder.setMessage(content);builder.setCancelable(false);if
(!TextUtils.isEmpty(positiveBtn))
{builder.setPositiveButton(positiveBtn,
DialogInterface.OnClickListener()
{positiveListener.onClick(dialog,
(!TextUtils.isEmpty(negativeBtn))
{builder.setNegativeButton(negativeBtn,
DialogInterface.OnClickListener()
{negativeListener.onClick(dialog,
RCCallPlusClient.getInstance().switchCamera();
RCCallPlusClient.getInstance().setCallPlusResultListener(new
当前开启的摄像头是否是前置摄像头br*/Overridepublic
{IRCCallPlusResultListener.super.onSwitchCamera(code,
cn.rongcloud.sdk:fu_beautifier:5.6.2
6839。
初始化美颜插件初始化时请提供有效的美颜授权文件。
应用运行期间只调用一次即可建议在
RCRTCFUBeautifierEngine.getInstance().register(getApplicationContext(),null,authpackNew.A(),new
{setBeautyEnable();SetBeautyParameters();}Overridepublic
打开美颜开关后设置的美颜效果才会生效关闭开关美颜会失效。
RCRTCFUBeautifierEngine.getInstance().setBeautyEnable(true,
{RCRTCFUBeautifierEngine.getInstance().setBlurIntensity(6);
范围[0-6]RCRTCFUBeautifierEngine.getInstance().setColorIntensity(2);
[0-2]RCRTCFUBeautifierEngine.getInstance().setRedIntensity(2);//
[0-2]RCRTCFUBeautifierEngine.getInstance().setSharpenIntensity(1);//
[0-1]RCRTCFUBeautifierEngine.getInstance().setEyeBrightIntensity(1);
[0-1]RCRTCFUBeautifierEngine.getInstance().setToothIntensity(1);//
[0-1]RCRTCFUBeautifierEngine.getInstance().setRemovePouchIntensity(1);//
[0-1]RCRTCFUBeautifierEngine.getInstance().setRemoveLawPatternIntensity(1);//
在业务开发集成、上线运营等全过程中融云都将提供全流程一站式技术服务支持开发者可提交工单与融云工程师交流。
欢迎来电咨询131
完整封装提供完整的呼叫功能方案包括连接、呼叫、接听、拒接、挂断、呼叫状态通知等。
等平台可以满足陌生人社交、在线招聘、远程医疗、线上咨询、售后客服等多种单人和多人通话场景使用。
周边完善提供业务场景所需的丰富高级功能包括内容审核、云端录制、高级美颜等让开发者的业务开展无忧且高效。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback