package com.dayayuemeng.classroom.helper; import android.Manifest; import android.app.Activity; import android.text.TextUtils; import android.view.View; import android.widget.TextView; import com.alibaba.android.arouter.launcher.ARouter; import com.cooleshow.base.common.BaseApplication; import com.cooleshow.base.router.RouterPath; import com.cooleshow.base.utils.PermissionUtils; import com.cooleshow.base.utils.ToastUtil; import com.cooleshow.base.utils.UiUtils; import com.cooleshow.base.utils.helper.PermissionTipHelper; import com.cooleshow.base.widgets.DialogUtil; import com.cooleshow.base.widgets.dialog.CommonConfirmDialog; import com.cooleshow.usercenter.helper.UserHelper; import com.dayayuemeng.classroom.api.ResultCallback; import com.dayayuemeng.classroom.bean.LoginResult; import com.dayayuemeng.classroom.constants.ARouterSealClass; import com.dayayuemeng.classroom.repository.UserRepository; import com.tbruyelle.rxpermissions3.RxPermissions; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.FragmentActivity; import io.reactivex.rxjava3.disposables.Disposable; /** * Author by pq, Date on 2023/8/18. */ public class OpenClassRoomHelper { public static final String SNARE_DRUM = "小军鼓"; public static final String FLUTE = "长笛"; // 两次点击按钮之间的点击间隔不能少于1000毫秒 private static final int MIN_CLICK_DELAY_TIME = 1000; private static long lastClickTime; public static boolean isFastClick() { boolean flag = false; long curClickTime = System.currentTimeMillis(); if ((curClickTime - lastClickTime) < MIN_CLICK_DELAY_TIME) { flag = true; } lastClickTime = curClickTime; return flag; } public static void start(FragmentActivity activity, String sealClassId, String subjectName) { if (isFastClick()) { return; } checkPermission(activity, sealClassId, subjectName); } private static void checkPermission(FragmentActivity activity, String sealClassId, String subjectName) { String[] permissions = new String[]{Manifest.permission.MODIFY_AUDIO_SETTINGS, Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}; PermissionTipHelper.getInstance().showTipDialog(activity, permissions); Disposable subscribe = new RxPermissions(activity) .request(permissions) .subscribe(isAllowPermission -> { PermissionTipHelper.getInstance().dismissDialog(); if (isAllowPermission) { prepareOpenCourseRoom(activity, sealClassId, subjectName); } else { showTipDialog(activity); } }); } private static void prepareOpenCourseRoom(Activity activity, String sealClassId, String subjectName) { UserRepository userRepository = new UserRepository(activity); String userName = UserHelper.getUserName(); userRepository.login(sealClassId, false, userName, new ResultCallback() { @Override public void onSuccess(LoginResult loginResult) { String path = ARouterSealClass.ACTIVITY_CLASS_ROOM; if (!BaseApplication.Companion.isTeacherClient()) { path = ARouterSealClass.ACTIVITY_CLASS_ROOM_STU; } ARouter.getInstance().build(path) .withSerializable("extra_login_result", loginResult) .navigation(); } @Override public void onFail(int errorCode, String errorStr) { if (activity != null) { activity.runOnUiThread(new Runnable() { @Override public void run() { if (!TextUtils.isEmpty(errorStr)) { ToastUtil.getInstance().show(activity, errorStr); } else { ToastUtil.getInstance().show(activity, "加入课堂失败,请重试;错误码:" + errorCode); } } }); } } }); } private static void showTipDialog(FragmentActivity activity) { // CommonConfirmDialog confirmDialog = new CommonConfirmDialog(activity); // confirmDialog.show(); // confirmDialog.setContent("加入课堂需要开启音视频相关权限"); // confirmDialog.setConfirmText("去设置"); // confirmDialog.setOnConfirmClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // PermissionUtils.toSelfSetting(activity); // } // }); UiUtils.showPermissionTipDialog(activity.getSupportFragmentManager(), activity, "提示", "请开启相机、麦克风访问和存储等相关权限"); } }