目录

  • RoleType
    • 使用场景:
    • 方法与使用说明
    • 源码

RoleType

接着之前的 UserInfo,对RoleType做进一步说明.
此类是SDK的公共类,可以在任一SDK使用方进行调用,之前有提到role是一个“复合”的值1,所以不能简单的用“==” 来判断,为了方便,给使用者提供一个工具类来调用。

使用场景:

  1. 直播聊天消息的角色判断
  2. 点播聊天消息的角色判断
  3. 其他有role的判断的地方

实际上UserInfo也是调用RoleType的函数并返回给调用者,例如userInfo.isHost()。

方法与使用说明

具有的函数都返回boolean值,参数都是int型的值(role)都是静态方法:

  1. isHost(int role) //老师、组织者
  2. isPresentor(int role) //主讲
  3. isPanelist(int role) //助教、嘉宾
  4. isAttendee(int role)客户端学生,电脑客户端或rtsdk加入的用户
  5. 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;}

关于位运算,后面会介绍。


  1. role 在系统中是用位来表示的,一个角色可能包含多个位,多个身份,函数中实现是做位运算。 ↩︎

Gensee SDK RoleType详解相关推荐

  1. 用WEB技术栈开发NATIVE应用(二):WEEX 前端SDK原理详解

    摘要: WEEX依旧采取传统的web开发技术栈进行开发,同时app在终端的运行体验不输native app.其同时解决了开发效率.发版速度以及用户体验三个核心问题.那么WEEX是如何实现的?目前WEE ...

  2. android 支付宝sdk接入详解

    android 支付宝sdk接入详解 第一步 在接入支付宝sdk之前首先要进入支付宝开发者平台申请应用所需要的应用唯一标识(APPID).应用私钥(APP_PRIVATE_KEY).支付宝公钥(ALI ...

  3. android动态贴纸实现原理,人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现...

    原标题:人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现 泛娱乐行业在互联网领域中发展趋势逐渐增强,而直播.短视频.视频社交等作为头部产品受到了众多用户的关注和喜爱.为了能够更好的满足用户体验,众 ...

  4. 全志 android 编译,全志Android SDK编译详解(二)

    注意要确定安装了jdk) 第一步: cd  lichee; ./build.sh  -p sun5i_elite -k 3.0  (apt-get install uboot-mkimage需要安装m ...

  5. S32K SDK使用详解之S32 SDK软件架构详解

    内容提要 引言 1. SDK的MCU平台相关设备驱动解析(SDK-->platform-->devices目录) 1.1 子目录common 1.2 子目录S32K1xx(为具体使用的MC ...

  6. Android基础知识——Android SDK Manager详解

    做Android开发时,免不了使用Android SDK Manager,安装需要的sdk版本.buildTools版本等等.下图展示了2016.11.16号Android SDK Manager所有 ...

  7. msp432快速入门第二节之sdk的详解

    SDK详解 (一) 目的是快速上手这款单片机,所以一些对于新手不友好的东西我都不会介绍,简略说明就略过. TI的SDK安装后如此: (1).metadata没用,似乎是安装后的遗留产品,好让CCS ( ...

  8. Android SDK Manager详解

    转载自:https://blog.csdn.net/u011026779/article/details/53178602 做Android开发时,免不了使用Android SDK Manager,安 ...

  9. android 最新sdk版本,详解如何在Android studio中更新sdk版本和build-tools版本

    一.首先看下Android开发用到的sdk目录: build-tools 保存着一些Android平台相关通用工具,比如adb.和aapt.aidl.dx等文件. aapt即Android Asset ...

最新文章

  1. 终于有人把 Docker 讲清楚了,万字详解!
  2. Cell:一种用基因流定义微生物种群的反向生态学方法
  3. 使用tcpwrapper实现访问控制功能
  4. uva 11714——Blind Sorting
  5. 猜拳游戏html,JavaScript中实现猜拳小游戏
  6. Latex排列图片:自由定义N行M列的排列方式
  7. GCF(1)---How to modify PICS according to FGI bits UE reported
  8. 他们从各大操作系统中发现了26个 USB 漏洞,用的是这款模糊测试工具
  9. excel两个表格数据对比_两个Excel表格合并,最有水平的处理方法
  10. mysql创建触发器怎么保存_如何创建使用mysql触发器?
  11. java安装包的大概组成部分
  12. 什么是句柄/底层绘图函数
  13. java.lang.IllegalStateException报警
  14. html做出文字凹凸效果,css3怎么实现字体凹陷凸出效果?(附代码)
  15. 此一去,世间再无马爸爸,相逢已是马老师
  16. java字符串替换字符串_java string 字符串替换
  17. PCAP学习笔记二:pcap4j源码笔记
  18. 蚂蚁特工吱指南|用来吃的AR游戏机,奥利奥终于对自己下手了
  19. Bat脚本编写以及cmd命令
  20. PMOS防浪涌抑制电路

热门文章

  1. strictmath_Java StrictMath cos()方法与示例
  2. JavaScript中的If和Else语句(香草)
  3. 工程中多个不同类型线程池_软件工程中不同类型的设计策略
  4. Oracle plsqlI 练习 传值
  5. 1-2.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之二
  6. include和require区别
  7. linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存
  8. 逻辑右移和算术右移区别
  9. LeetCode题库整理【Java】—— 3 无重复字符的最长子串
  10. maya批量操作mel_MAYA对多个模型使用当前设置批量渲染并保存图片的MEL脚本