Gensee SDK RoleType详解
目录
- RoleType
- 使用场景:
- 方法与使用说明
- 源码
RoleType
接着之前的 UserInfo,对RoleType做进一步说明.
此类是SDK的公共类,可以在任一SDK使用方进行调用,之前有提到role是一个“复合”的值1,所以不能简单的用“==” 来判断,为了方便,给使用者提供一个工具类来调用。
使用场景:
- 直播聊天消息的角色判断
- 点播聊天消息的角色判断
- 其他有role的判断的地方
实际上UserInfo也是调用RoleType的函数并返回给调用者,例如userInfo.isHost()。
方法与使用说明
具有的函数都返回boolean值,参数都是int型的值(role)都是静态方法:
- isHost(int role) //老师、组织者
- isPresentor(int role) //主讲
- isPanelist(int role) //助教、嘉宾
- isAttendee(int role)客户端学生,电脑客户端或rtsdk加入的用户
- isAttendeeWeb(int role) web端学生,web、小程序或player sdk加入的用户
使用的时候,如果只判断是否为其中一种角色,那么直接调用其中一个函数就可以。
如果是分别判断的话,请按顺序依次判断,例如:
if (RoleType.isHost(role)) {//todo 老师、组织者} else if (RoleType.isPresentor(role)) {//todo 主讲} else if (RoleType.isPanelist(role)) {//todo 助教 嘉宾} else if (RoleType.isAttendee(role)) {//todo 客户端学生} else if (RoleType.isAttendeeWeb(role)) {//todo web端学生}
主要原因是复合,例如7代表老师或组织者,但老师或组织者的角色实际上是1,是因为:
7 = 1|2|4,该用户同时具有老师、主讲、助教的身份,最高身份是老师,所以说7代表老师。
再这种一个位表示一种身份的情况下,可以简单理解为7=1+2+4。
源码
public static final int ROLE_HOST = 0x01;//组织者、老师public static final int ROLE_PRESENT = 0x02;//主讲public static final int ROLE_PANELIST = 0x04;//嘉宾、助教public static final int ROLE_ATTENDEE = 0x08;//客户端学生public static final int ROLE_ATTENDEE_WEB = 0x10;//web端学生public static final int ROLE_LOD = 0x20;//插播,app几乎用不上public static boolean isHost(int role) {return (role & RoleType.ROLE_HOST) == RoleType.ROLE_HOST;}public static boolean isPresentor(int role) {return (role & RoleType.ROLE_PRESENT) == RoleType.ROLE_PRESENT;}public static boolean isPanelist(int role) {return (role & RoleType.ROLE_PANELIST) == RoleType.ROLE_PANELIST;}public static boolean isAttendee(int role) {return (role & RoleType.ROLE_ATTENDEE) == RoleType.ROLE_ATTENDEE;}public static boolean isAttendeeWeb(int role) {return (role & RoleType.ROLE_ATTENDEE_WEB) == RoleType.ROLE_ATTENDEE_WEB;}public static boolean isLodUser(int role) {return (role & RoleType.ROLE_LOD) == RoleType.ROLE_LOD;}public static boolean isMiniClassTeacher(int role){return isHost(role) || isPresentor(role) || isPanelist(role);}/*** otherUserRole 是否比role的角色(权限高)* @param otherUserRole* @param role* @return*/public static boolean isRoleGreater(int otherUserRole,int role) {for (int i = 0; i < 3; i++) // 比到第二位,嘉宾位, 0:组织者,1 主讲{int nMe = (role >> i) & 0x01;int nOther = (otherUserRole >> i) & 0x01;if (nMe != nOther) {return nMe > nOther;}}return false;}
关于位运算,后面会介绍。
role 在系统中是用位来表示的,一个角色可能包含多个位,多个身份,函数中实现是做位运算。 ↩︎
Gensee SDK RoleType详解相关推荐
- 用WEB技术栈开发NATIVE应用(二):WEEX 前端SDK原理详解
摘要: WEEX依旧采取传统的web开发技术栈进行开发,同时app在终端的运行体验不输native app.其同时解决了开发效率.发版速度以及用户体验三个核心问题.那么WEEX是如何实现的?目前WEE ...
- android 支付宝sdk接入详解
android 支付宝sdk接入详解 第一步 在接入支付宝sdk之前首先要进入支付宝开发者平台申请应用所需要的应用唯一标识(APPID).应用私钥(APP_PRIVATE_KEY).支付宝公钥(ALI ...
- android动态贴纸实现原理,人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现...
原标题:人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现 泛娱乐行业在互联网领域中发展趋势逐渐增强,而直播.短视频.视频社交等作为头部产品受到了众多用户的关注和喜爱.为了能够更好的满足用户体验,众 ...
- 全志 android 编译,全志Android SDK编译详解(二)
注意要确定安装了jdk) 第一步: cd lichee; ./build.sh -p sun5i_elite -k 3.0 (apt-get install uboot-mkimage需要安装m ...
- S32K SDK使用详解之S32 SDK软件架构详解
内容提要 引言 1. SDK的MCU平台相关设备驱动解析(SDK-->platform-->devices目录) 1.1 子目录common 1.2 子目录S32K1xx(为具体使用的MC ...
- Android基础知识——Android SDK Manager详解
做Android开发时,免不了使用Android SDK Manager,安装需要的sdk版本.buildTools版本等等.下图展示了2016.11.16号Android SDK Manager所有 ...
- msp432快速入门第二节之sdk的详解
SDK详解 (一) 目的是快速上手这款单片机,所以一些对于新手不友好的东西我都不会介绍,简略说明就略过. TI的SDK安装后如此: (1).metadata没用,似乎是安装后的遗留产品,好让CCS ( ...
- Android SDK Manager详解
转载自:https://blog.csdn.net/u011026779/article/details/53178602 做Android开发时,免不了使用Android SDK Manager,安 ...
- android 最新sdk版本,详解如何在Android studio中更新sdk版本和build-tools版本
一.首先看下Android开发用到的sdk目录: build-tools 保存着一些Android平台相关通用工具,比如adb.和aapt.aidl.dx等文件. aapt即Android Asset ...
最新文章
- 终于有人把 Docker 讲清楚了,万字详解!
- Cell:一种用基因流定义微生物种群的反向生态学方法
- 使用tcpwrapper实现访问控制功能
- uva 11714——Blind Sorting
- 猜拳游戏html,JavaScript中实现猜拳小游戏
- Latex排列图片:自由定义N行M列的排列方式
- GCF(1)---How to modify PICS according to FGI bits UE reported
- 他们从各大操作系统中发现了26个 USB 漏洞,用的是这款模糊测试工具
- excel两个表格数据对比_两个Excel表格合并,最有水平的处理方法
- mysql创建触发器怎么保存_如何创建使用mysql触发器?
- java安装包的大概组成部分
- 什么是句柄/底层绘图函数
- java.lang.IllegalStateException报警
- html做出文字凹凸效果,css3怎么实现字体凹陷凸出效果?(附代码)
- 此一去,世间再无马爸爸,相逢已是马老师
- java字符串替换字符串_java string 字符串替换
- PCAP学习笔记二:pcap4j源码笔记
- 蚂蚁特工吱指南|用来吃的AR游戏机,奥利奥终于对自己下手了
- Bat脚本编写以及cmd命令
- PMOS防浪涌抑制电路
热门文章
- strictmath_Java StrictMath cos()方法与示例
- JavaScript中的If和Else语句(香草)
- 工程中多个不同类型线程池_软件工程中不同类型的设计策略
- Oracle plsqlI 练习 传值
- 1-2.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之二
- include和require区别
- linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存
- 逻辑右移和算术右移区别
- LeetCode题库整理【Java】—— 3 无重复字符的最长子串
- maya批量操作mel_MAYA对多个模型使用当前设置批量渲染并保存图片的MEL脚本