OpenClassRoomHelper.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.dayayuemeng.classroom.helper;
  2. import android.Manifest;
  3. import android.app.Activity;
  4. import android.text.TextUtils;
  5. import android.view.View;
  6. import android.widget.TextView;
  7. import com.alibaba.android.arouter.launcher.ARouter;
  8. import com.cooleshow.base.common.BaseApplication;
  9. import com.cooleshow.base.router.RouterPath;
  10. import com.cooleshow.base.utils.PermissionUtils;
  11. import com.cooleshow.base.utils.ToastUtil;
  12. import com.cooleshow.base.utils.UiUtils;
  13. import com.cooleshow.base.utils.helper.PermissionTipHelper;
  14. import com.cooleshow.base.widgets.DialogUtil;
  15. import com.cooleshow.base.widgets.dialog.CommonConfirmDialog;
  16. import com.cooleshow.usercenter.helper.UserHelper;
  17. import com.dayayuemeng.classroom.api.ResultCallback;
  18. import com.dayayuemeng.classroom.bean.LoginResult;
  19. import com.dayayuemeng.classroom.constants.ARouterSealClass;
  20. import com.dayayuemeng.classroom.repository.UserRepository;
  21. import com.tbruyelle.rxpermissions3.RxPermissions;
  22. import androidx.appcompat.app.AppCompatActivity;
  23. import androidx.fragment.app.FragmentActivity;
  24. import io.reactivex.rxjava3.disposables.Disposable;
  25. /**
  26. * Author by pq, Date on 2023/8/18.
  27. */
  28. public class OpenClassRoomHelper {
  29. public static final String SNARE_DRUM = "小军鼓";
  30. public static final String FLUTE = "长笛";
  31. // 两次点击按钮之间的点击间隔不能少于1000毫秒
  32. private static final int MIN_CLICK_DELAY_TIME = 1000;
  33. private static long lastClickTime;
  34. public static boolean isFastClick() {
  35. boolean flag = false;
  36. long curClickTime = System.currentTimeMillis();
  37. if ((curClickTime - lastClickTime) < MIN_CLICK_DELAY_TIME) {
  38. flag = true;
  39. }
  40. lastClickTime = curClickTime;
  41. return flag;
  42. }
  43. public static void start(FragmentActivity activity, String sealClassId, String subjectName) {
  44. if (isFastClick()) {
  45. return;
  46. }
  47. checkPermission(activity, sealClassId, subjectName);
  48. }
  49. private static void checkPermission(FragmentActivity activity, String sealClassId, String subjectName) {
  50. String[] permissions = new String[]{Manifest.permission.MODIFY_AUDIO_SETTINGS,
  51. Manifest.permission.RECORD_AUDIO,
  52. Manifest.permission.CAMERA,
  53. Manifest.permission.WRITE_EXTERNAL_STORAGE};
  54. PermissionTipHelper.getInstance().showTipDialog(activity, permissions);
  55. Disposable subscribe = new RxPermissions(activity)
  56. .request(permissions)
  57. .subscribe(isAllowPermission -> {
  58. PermissionTipHelper.getInstance().dismissDialog();
  59. if (isAllowPermission) {
  60. prepareOpenCourseRoom(activity, sealClassId, subjectName);
  61. } else {
  62. showTipDialog(activity);
  63. }
  64. });
  65. }
  66. private static void prepareOpenCourseRoom(Activity activity, String sealClassId, String subjectName) {
  67. UserRepository userRepository = new UserRepository(activity);
  68. String userName = UserHelper.getUserName();
  69. userRepository.login(sealClassId, false, userName, new ResultCallback<LoginResult>() {
  70. @Override
  71. public void onSuccess(LoginResult loginResult) {
  72. String path = ARouterSealClass.ACTIVITY_CLASS_ROOM;
  73. if (!BaseApplication.Companion.isTeacherClient()) {
  74. path = ARouterSealClass.ACTIVITY_CLASS_ROOM_STU;
  75. }
  76. ARouter.getInstance().build(path)
  77. .withSerializable("extra_login_result", loginResult)
  78. .navigation();
  79. }
  80. @Override
  81. public void onFail(int errorCode, String errorStr) {
  82. if (activity != null) {
  83. activity.runOnUiThread(new Runnable() {
  84. @Override
  85. public void run() {
  86. if (!TextUtils.isEmpty(errorStr)) {
  87. ToastUtil.getInstance().show(activity, errorStr);
  88. } else {
  89. ToastUtil.getInstance().show(activity, "加入课堂失败,请重试;错误码:" + errorCode);
  90. }
  91. }
  92. });
  93. }
  94. }
  95. });
  96. }
  97. private static void showTipDialog(FragmentActivity activity) {
  98. // CommonConfirmDialog confirmDialog = new CommonConfirmDialog(activity);
  99. // confirmDialog.show();
  100. // confirmDialog.setContent("加入课堂需要开启音视频相关权限");
  101. // confirmDialog.setConfirmText("去设置");
  102. // confirmDialog.setOnConfirmClickListener(new View.OnClickListener() {
  103. // @Override
  104. // public void onClick(View v) {
  105. // PermissionUtils.toSelfSetting(activity);
  106. // }
  107. // });
  108. UiUtils.showPermissionTipDialog(activity.getSupportFragmentManager(), activity, "提示", "请开启相机、麦克风访问和存储等相关权限");
  109. }
  110. }