Gensee SDK RoleType详解
生活随笔
收集整理的這篇文章主要介紹了
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详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构题(莫队算法)
- 下一篇: 数列互质(莫队算法)