AccompanyHelper.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package com.daya.accompanysdk.manager;
  2. import android.app.Activity;
  3. import android.app.Application;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.content.pm.ActivityInfo;
  7. import android.webkit.ClientCertRequest;
  8. import android.webkit.WebView;
  9. import com.alibaba.android.arouter.launcher.ARouter;
  10. import com.cooleshow.base.common.BaseConstant;
  11. import com.cooleshow.base.common.WebConstants;
  12. import com.cooleshow.base.data.auth.Https;
  13. import com.cooleshow.base.router.RouterPath;
  14. import com.cooleshow.base.utils.LOG;
  15. import com.cooleshow.base.utils.helper.upload.UploadHelper;
  16. import com.cooleshow.usercenter.constants.UserConstants;
  17. import com.cooleshow.usercenter.helper.UserHelper;
  18. import com.daya.accompanysdk.R;
  19. import com.daya.accompanysdk.engine.GlideEngine;
  20. import com.daya.accompanysdk.utils.Utils;
  21. import com.daya.accompanysdk.widget.CustomDelayCheckView;
  22. import com.daya.orchestra.accompany.bean.AccompanyStartParams;
  23. import com.daya.orchestra.accompany.bean.MusicSaveParams;
  24. import com.daya.orchestra.accompany.bean.WebConfig;
  25. import com.daya.orchestra.accompany.callback.ResultCallback;
  26. import com.daya.orchestra.accompany.common.AccompanyEventImpl;
  27. import com.daya.orchestra.accompany.common.AccompanyManager;
  28. import com.daya.orchestra.accompany.helper.CacheHelper;
  29. import com.daya.orchestra.accompany.widget.BaseDelayCheckView;
  30. import com.luck.picture.lib.PictureSelector;
  31. import com.luck.picture.lib.config.PictureConfig;
  32. import com.luck.picture.lib.config.PictureMimeType;
  33. import com.luck.picture.lib.tools.SPUtils;
  34. import org.json.JSONObject;
  35. import java.io.File;
  36. import androidx.activity.result.ActivityResultLauncher;
  37. import androidx.fragment.app.Fragment;
  38. import androidx.fragment.app.FragmentManager;
  39. import okhttp3.internal.platform.Platform;
  40. import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
  41. /**
  42. * Author by pq, Date on 2024/1/17.
  43. */
  44. public class AccompanyHelper {
  45. private AccompanyHelper() {
  46. }
  47. private static class AccompanyHelperHolder {
  48. private static AccompanyHelper sHelper = new AccompanyHelper();
  49. }
  50. public static AccompanyHelper getInstance() {
  51. return AccompanyHelperHolder.sHelper;
  52. }
  53. public void initAccompany(Application application) {
  54. AccompanyManager.getInstance().init(application, new AccompanyEventImpl() {
  55. @Override
  56. public void showPermissionTipDialog(FragmentManager fragmentManager, Context context, String s, String s1) {
  57. Utils.showPermissionTipDialog2(fragmentManager, context, s, s1);
  58. }
  59. @Override
  60. public String getBaseServerUrl() {
  61. return BaseConstant.SERVER_ADDRESS;
  62. }
  63. @Override
  64. public void toUpload(Activity activity, File file, String s, String s1, ResultCallback<Object> resultCallback) {
  65. UploadHelper uploadHelper = new UploadHelper(activity, s, s1);
  66. uploadHelper.uploadFile(file);
  67. uploadHelper.setUpLoadCallBack(new UploadHelper.UpLoadCallBack() {
  68. @Override
  69. public void onSuccess(String url) {
  70. if (resultCallback != null) {
  71. resultCallback.onSuccess(url);
  72. }
  73. }
  74. @Override
  75. protected void onFailure() {
  76. if (resultCallback != null) {
  77. resultCallback.onFail(0, "");
  78. }
  79. }
  80. });
  81. }
  82. @Override
  83. public void logout() {
  84. ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
  85. .withString(UserConstants.PHONE_NUM_KEY, UserHelper.getUserPhone())
  86. .navigation();
  87. }
  88. @Override
  89. public void goChat(String s, String s1) {
  90. }
  91. @Override
  92. public void openWebView(JSONObject jsonObject) {
  93. try {
  94. JSONObject content = jsonObject.getJSONObject("content");
  95. boolean isHideTitle = false;
  96. boolean statusBarTextColor = false;
  97. boolean isOpenLight = false;
  98. boolean showLoadingAnim = false;
  99. int orientation = -1;
  100. int c_orientation = -1;
  101. try {
  102. isHideTitle = content.optBoolean("isHideTitle");
  103. statusBarTextColor = content.optBoolean("statusBarTextColor");
  104. isOpenLight = content.optBoolean("isOpenLight");
  105. showLoadingAnim = content.optBoolean("showLoadingAnim");
  106. orientation = content.optInt("orientation");
  107. c_orientation = content.optInt("c_orientation");
  108. } catch (Exception e) {
  109. e.printStackTrace();
  110. }
  111. String path = RouterPath.WebCenter.ACTIVITY_HTML;
  112. ARouter.getInstance().build(path)
  113. .withString(WebConstants.WEB_URL, content.optString("url"))
  114. .withBoolean("isHideTitle", isHideTitle)
  115. .withBoolean("statusBarTextColor", statusBarTextColor)
  116. .withBoolean("isOpenLight", isOpenLight)
  117. .withBoolean("showLoadingAnim", showLoadingAnim)
  118. .withInt("orientation", orientation)
  119. .withInt("c_orientation", c_orientation)
  120. .navigation();
  121. } catch (Exception e) {
  122. e.printStackTrace();
  123. }
  124. }
  125. @Override
  126. public boolean onReceivedClientCertRequest(WebView view, ClientCertRequest request) {
  127. LOG.i("onReceivedClientCertRequest");
  128. boolean proceed = Https.proceed(com.cooleshow.base.utils.Utils.getApp(), request);
  129. return proceed;
  130. }
  131. @Override
  132. public void openMusicMergePage(Activity activity, MusicSaveParams musicSaveParams, int requestCode) {
  133. LOG.i("openMusicMergePage:"+musicSaveParams.getMusicSheetId()+"\nmusicRenderType:"+musicSaveParams.getMusicRenderType()+"\nspeedRate:"+musicSaveParams.getEvaluationSpeed());
  134. ARouter.getInstance().build(RouterPath.MusicTuner.MUSIC_MERGE_PAGE)
  135. .withString("accompanyUrl", musicSaveParams.getAccompanyUrl())
  136. .withString("recordFilePath", musicSaveParams.getRecordFilePath())
  137. .withString("recordId", musicSaveParams.getRecordId())
  138. .withString("title", musicSaveParams.getTitle())
  139. .withString("musicSheetId", musicSaveParams.getMusicSheetId())
  140. .withString("musicRenderType", musicSaveParams.getMusicRenderType())
  141. .withString("coverImg", musicSaveParams.getCoverImg())
  142. .withFloat("speedRate", musicSaveParams.getEvaluationSpeed())
  143. .withInt("part-index", musicSaveParams.getPartIndex())
  144. .withInt("defaultDelay", musicSaveParams.getDefaultDelay())
  145. .withInt("evaluateDelay", musicSaveParams.getEvaluateDelay())//此字段给IOS使用
  146. .withInt("c_orientation", ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
  147. .navigation(activity, requestCode);
  148. }
  149. @Override
  150. public void selectPicture(Fragment fragment,ActivityResultLauncher<Intent> activityResultLauncher) {
  151. PictureSelector.create(fragment)
  152. .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
  153. .loadImageEngine(GlideEngine.createGlideEngine())
  154. .theme(R.style.picture_daya_style)// 主题样式设置 具体参考 values/styles 用法:R .style.picture.white.style
  155. .selectionMode(PictureConfig.SINGLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
  156. .enableCrop(false)// 是否裁剪 true or false
  157. .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false true or false
  158. .compress(true)// 是否压缩 true or false
  159. .circleDimmedLayer(false)// 是否圆形裁剪 true or false
  160. .forResult(activityResultLauncher);
  161. }
  162. @Override
  163. public BaseDelayCheckView getDelayCheckView(Context context) {
  164. return new CustomDelayCheckView(context);
  165. }
  166. });
  167. AccompanyManager.getInstance().setLogDebugMode(com.cooleshow.base.BuildConfig.DEBUG);
  168. setWebConfig();
  169. AccompanyManager.getInstance().clearDelay();//清除延迟检测值
  170. AccompanyManager.getInstance().setLoadingAnimRes(R.layout.accompany_loading_layout,R.drawable.icon_accompany_back);
  171. }
  172. private void setWebConfig(){
  173. WebConfig webConfig = new WebConfig();
  174. webConfig.setWeb_UA_params(WebConstants.getAccompanyUA());
  175. webConfig.setWebJsInterfaceName(WebConstants.WEB_JS_INTERFACE);
  176. webConfig.setCustomWebSocketUrl(WebConstants.getWebSocketUrl());
  177. AccompanyManager.getInstance().setWebConfig(webConfig);
  178. }
  179. public void loginAccompany(String userId, String userToken) {
  180. AccompanyManager.getInstance().login(userId, userToken);
  181. }
  182. public void startAccompanyPage(Context context, String url) {
  183. startAccompanyPage(context, url, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE, -1);
  184. }
  185. public void startAccompanyPage(Context context, String url, int orientation) {
  186. startAccompanyPage(context, url, orientation, -1);
  187. }
  188. public void startAccompanyPage(Context context, String url, int orientation, int c_orientation) {
  189. AccompanyStartParams accompanyStartParams = new AccompanyStartParams();
  190. accompanyStartParams.setUrl(url);
  191. accompanyStartParams.setOrientation(orientation);
  192. accompanyStartParams.setC_orientation(c_orientation);
  193. accompanyStartParams.setHideTitle(true);
  194. accompanyStartParams.setOpenLight(true);
  195. //管理端和学校端可能存在切账号流程,所以每次进入之前重新设置下相关参数把
  196. setWebConfig();
  197. AccompanyManager.getInstance().startAccompany(context, accompanyStartParams);
  198. }
  199. /**
  200. * 临时处理
  201. * @param context
  202. * @param url
  203. * @param orientation
  204. * @param c_orientation
  205. */
  206. public void startAccompanyPageByToken(Context context, String url, int orientation, int c_orientation){
  207. url = "https://dev.colexiu.com/klx-music-score/?id=85992220";
  208. boolean status = url.contains("?");
  209. String userAuthorization = CacheHelper.getUserToken();
  210. if (status) {
  211. url = (url + "&Authorization=" + userAuthorization);
  212. } else {
  213. url = (url + "?Authorization=" + userAuthorization);
  214. }
  215. startAccompanyPage(context,url,orientation,c_orientation);
  216. }
  217. }