Skip to content

3_3 直播_连麦

jlayi edited this page Jul 1, 2019 · 1 revision

1 使用简介

保利威云课堂sdk支持连麦功能,举手连麦、音频连麦、视频连麦可自由选择,并支持多人连麦,丰富课堂内容。

连麦流程:讲师端发起连麦->学员举手申请连麦->讲师端允许学员连麦->学员正式加入连麦。

2 初始化

2.1 权限配置

连麦需要以下的权限,并且CAMERARECORD_AUDIO权限需要动态申请,权限的申请时机可以放到申请连麦前。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

权限的配置在polyv-demo的app模块的AndroidManifest.xml文件中已经配置好了,权限申请的代码在PolyvCloudClassVideoHelper类的requestPermission方法中处理。

如果您项目已集成了polyv-demo的app和commonui模块,则这些权限无需再配置。

2.2 配置账号信息

 PolyvLinkMicClient.getInstance().setAppIdSecret(appId, appSecert);

该方法的用例在PolyvCloudClassLoginActivity类的checkToken方法中可以找到。

2.3 初始化配置

 PolyvLinkMicWrapper.getInstance().init(context);
 PolyvLinkMicWrapper.getInstance().intialConfig(channelId);

该方法的用例在PolyvCloudClassHomeActivity类的initialLinkMic方法中可以找到。

3 连麦方法的使用

3.1 设置ppt类型

//设置直播的类型是否是三分屏(PPT类型),因为连麦的摄像头会根据直播的类型做调整
PolyvLinkMicWrapper.getInstance().setPPTStatus(showPPT);

该方法的用例在PolyvCloudClassVideoHelper类的createLinkMicLayout方法中可以找到。

3.2 开启/关闭本地的摄像头

讲师端可以开启视频/音频连麦,学员端连麦时也需要根据讲师端的连麦类型作调整。

//讲师端的连麦类型从videoView.getLinkMicType方法中获取
PolyvLinkMicWrapper.getInstance().muteLocalVideo("audio".equals(videoView.getLinkMicType()));

该方法的用例在PolyvCloudClassVideoHelper类的sendJoinRequest方法中可以找到。

3.3 举手申请

连麦的申请,取消申请事件的发送,都是通过聊天室来完成的,所以连麦举手用如下的方法:

polyvChatManager.sendJoinRequestMessage(PolyvLinkMicWrapper.getInstance().getLinkMicUid());

该方法的用例在PolyvCloudClassVideoHelper类的sendJoinRequest方法中可以找到。

3.4 取消举手

polyvChatManager.sendJoinLeave(PolyvLinkMicWrapper.getInstance().getLinkMicUid());

该方法的用例在PolyvCloudClassVideoHelper类的leaveChannel方法中可以找到。

3.5 加入连麦

当讲师同意连麦后,学员端就可以加入连麦,同意连麦的事件可以在聊天室的信息监听回调中拿到。

PolyvLinkMicWrapper.getInstance().joinChannel("");

该方法的用例在PolyvCloudClassVideoHelper类的processJoinResponseMessage方法中可以找到。

3.6 离开连麦

PolyvLinkMicWrapper.getInstance().leaveChannel();

该方法的用例在PolyvCloudClassMediaController类的showStopLinkDialog方法中可以找到。

3.7 连麦事件监听

连麦事件监听包括:举手申请、取消举手、讲师同意、讲师开启/关闭连麦、连麦类型、讲师摄像头开关等。

polyvChatManager.addNewMessageListener(newMessageListener);

该方法的用例在PolyvCloudClassVideoHelper类的构造方法中可以找到。

监听事件的类型及回调处理在PolyvCloudClassVideoHelper类的onNewMessage方法中可以找到。

3.8 连麦状态监听

连麦状态监听包括:连麦者的音量变化、连麦加入成功、离开连麦、用户加入连麦、用户离开连麦、用户禁用视频/音频等。

PolyvLinkMicWrapper.getInstance().addEventHandler(polyvLinkMicAGEventHandler);

该方法的用例在PolyvCloudClassVideoHelper类的构造方法中可以找到。

监听事件的类型及回调处理在PolyvCloudClassVideoHelper类的polyvLinkMicAGEventHandler匿名内部类可以找到。

3.9 创建连麦渲染视图

连麦渲染视图的作用是显示连麦者的视频画面。

PolyvLinkMicWrapper.getInstance().createRendererView(PolyvAppUtils.getApp());

该方法的用例在PolyvLinkMicDataBinder类的onCreateViewHolder方法中可以找到。

3.10 关联连麦者的渲染视图

关联渲染视图后,方可把连麦者的画面显示出来。

//关联本地(自己)摄像头的视图
PolyvLinkMicWrapper.getInstance().setupLocalVideo(surfaceView, VideoCanvas.RENDER_MODE_FIT, myUid);
//关联远端连麦者的视图
PolyvLinkMicWrapper.getInstance().setupRemoteVideo(surfaceView, VideoCanvas.RENDER_MODE_FIT, remoteUid);

该方法的用例在PolyvLinkMicDataBinder类的onBindViewHolder方法中可以找到。

3.11 切换本地摄像头

PolyvLinkMicWrapper.getInstance().switchCamera();

该方法的用例在PolyvLinkMicDataBinder类的构造方法中可以找到。

3.12 获取本地(自己)的连麦id

PolyvLinkMicWrapper.getInstance().getLinkMicUid();

3.13 销毁连麦并释放资源

当不需要使用连麦功能时,需要销毁连麦并释放资源,建议该方法的使用放到Activity的onDestroy方法里。

PolyvLinkMicWrapper.getInstance().destroy(null);

该方法的用例在PolyvCloudClassHomeActivity类的onDestroy方法里可以找到。

4 连麦功能在polyv-demo各个类中的使用

保利威云课堂demo已经封装好连麦应用层的实现代码,由于连麦涉及到的交互比较多,建议客户直接使用云课堂demo的连麦代码,再在上面进行二次开发。

以下的类仅说明在连麦功能中的作用。

(1) PolyvCloudClassLoginActivity:配置连麦的账号信息。

(2) PolyvCloudClassHomeActivity:连麦布局的创建、布局位置的调控,初始化连麦,销毁连麦。

(3) PolyvCloudClassVideoHelper:基本整个连麦流程和交互都是在这个类完成,包括:申请连麦、离开连麦、连麦布局的显示/隐藏、连麦状态的维护、连麦相关事件的监听处理等。

(4) PolyvLinkMicDataBinder/PolyvNormalLiveLinkMicDataBinder:云课堂/普通直播的连麦适配器,主要是控制连麦列表布局item的处理、连麦item视图与主屏视图的切换逻辑。

(5) PolyvLinkMicListView/PolyvNormalLinkMicView:连麦item的父控件,主要是控制布局的位置,显示隐藏状态。

Clone this wiki locally