Browse Source

引入云教练SDK整合版本

Pq 4 months ago
parent
commit
b1ab92534b
96 changed files with 1424 additions and 73 deletions
  1. 0 2
      BaseLibrary/build.gradle
  2. 4 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java
  3. 0 7
      BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/WebStartHelper.java
  4. 8 8
      accompany/src/main/java/com/daya/orchestra/accompany/js/JsInterfaceAccomPanyUtils.java
  5. 1 1
      accompany/src/main/java/com/daya/orchestra/accompany/web/AccompanyActivity.java
  6. 1 0
      accompanySDK/.gitignore
  7. 49 0
      accompanySDK/build.gradle
  8. 0 0
      accompanySDK/consumer-rules.pro
  9. BIN
      accompanySDK/libs/accompany_release_1.0.3_2410251726.aar
  10. BIN
      accompanySDK/libs/camerakit_release_1.0.0_2407171443.aar
  11. BIN
      accompanySDK/libs/ffmpegCmd-release_1.0.2_2410081548.aar
  12. BIN
      accompanySDK/libs/midiplaylib_release_1.0.0_2403011515.aar
  13. 21 0
      accompanySDK/proguard-rules.pro
  14. 26 0
      accompanySDK/src/androidTest/java/com/daya/accompanysdk/ExampleInstrumentedTest.java
  15. 4 0
      accompanySDK/src/main/AndroidManifest.xml
  16. 195 0
      accompanySDK/src/main/java/com/daya/accompanysdk/engine/GlideEngine.java
  17. 247 0
      accompanySDK/src/main/java/com/daya/accompanysdk/manager/AccompanyHelper.java
  18. 20 0
      accompanySDK/src/main/java/com/daya/accompanysdk/utils/Utils.java
  19. 212 0
      accompanySDK/src/main/java/com/daya/accompanysdk/widget/CustomDelayCheckView.java
  20. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_check_fail.png
  21. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_check_ing.png
  22. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_check_prepare.png
  23. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_check_success.png
  24. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_icon_back.png
  25. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_icon_ball.png
  26. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_icon_ball2.png
  27. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_icon_delay_check_tip1.png
  28. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_icon_delay_check_tip2.png
  29. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_icon_delay_check_tip3.png
  30. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_icon_delay_check_tip4.png
  31. BIN
      accompanySDK/src/main/res/drawable-xhdpi/ac_icon_tip.png
  32. BIN
      accompanySDK/src/main/res/drawable-xhdpi/icon_accompany_back.png
  33. BIN
      accompanySDK/src/main/res/drawable-xhdpi/icon_accompany_loading_progress_bg.png
  34. BIN
      accompanySDK/src/main/res/drawable-xhdpi/icon_accompany_no_permiss_bg1.png
  35. BIN
      accompanySDK/src/main/res/drawable-xhdpi/icon_no_permission_cancel_bg.png
  36. BIN
      accompanySDK/src/main/res/drawable-xhdpi/icon_no_permission_confirm_bg.png
  37. BIN
      accompanySDK/src/main/res/drawable-xhdpi/icon_no_permission_content_bg.png
  38. BIN
      accompanySDK/src/main/res/drawable-xhdpi/icon_no_permission_tip_bg.png
  39. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_check_fail.png
  40. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_check_ing.png
  41. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_check_prepare.png
  42. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_check_success.png
  43. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_delay_check_bg.png
  44. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_delay_check_bg2.png
  45. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_back.png
  46. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_ball.png
  47. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_ball2.png
  48. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_delay_check_tip1.png
  49. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_delay_check_tip2.png
  50. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_delay_check_tip3.png
  51. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_delay_check_tip4.png
  52. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_tip.png
  53. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/bg_accompany_loading.png
  54. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/ic_accompany_permissions_title.png
  55. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/icon_accompany_back.png
  56. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/icon_accompany_loading_progress_bg.png
  57. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/icon_accompany_no_permiss_bg1.png
  58. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/icon_no_permission_cancel_bg.png
  59. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/icon_no_permission_confirm_bg.png
  60. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/icon_no_permission_content_bg.png
  61. BIN
      accompanySDK/src/main/res/drawable-xxhdpi/icon_no_permission_tip_bg.png
  62. 38 0
      accompanySDK/src/main/res/drawable/shape_accompany_loading_progress_drawable.xml
  63. 174 0
      accompanySDK/src/main/res/layout/ac_custom_delay_check_layout.xml
  64. 84 0
      accompanySDK/src/main/res/layout/accompany_loading_layout.xml
  65. 161 0
      accompanySDK/src/main/res/layout/accompany_permissions_popu2.xml
  66. 0 0
      accompanySDK/src/main/res/raw/ac_delaycheck_bubble_anim.json
  67. 0 0
      accompanySDK/src/main/res/raw/ac_delaycheck_shooting_star_anim.json
  68. 0 0
      accompanySDK/src/main/res/raw/accompany_loading.json
  69. 0 0
      accompanySDK/src/main/res/raw/accompany_loading_portrait.json
  70. BIN
      accompanySDK/src/main/res/raw/feeble.wav
  71. BIN
      accompanySDK/src/main/res/raw/midstrong.wav
  72. 4 0
      accompanySDK/src/main/res/values/colors.xml
  73. 4 0
      accompanySDK/src/main/res/values/strings.xml
  74. 56 0
      accompanySDK/src/main/res/values/styles.xml
  75. 17 0
      accompanySDK/src/test/java/com/daya/accompanysdk/ExampleUnitTest.java
  76. 1 0
      chatModule/build.gradle
  77. 5 1
      chatModule/src/main/java/com/cooleshow/chatmodule/message/holder/TUIChatShareMusicMessageHolder.java
  78. 1 0
      chatModule/src/main/java/com/cooleshow/chatmodule/ui/ChatFragment.java
  79. 1 0
      institution/build.gradle
  80. 14 0
      institution/src/main/java/com/cooleshow/institution/stu/ui/main/MainActivity.java
  81. 1 1
      musicMerge/build.gradle
  82. BIN
      musicMerge/libs/ffmpegCmd-release_1.0.2_2410081548.aar
  83. 1 1
      rong_im/kit/src/main/java/io/rong/imkit/conversation/messgelist/provider/RCChatShareMusicProvider.java
  84. 4 3
      settings.gradle
  85. 1 2
      student/build.gradle
  86. 6 0
      student/src/main/java/com/cooleshow/student/App.java
  87. 13 0
      student/src/main/java/com/cooleshow/student/ui/main/MainActivity.java
  88. 9 3
      student/src/main/java/com/cooleshow/student/ui/web/AccompanyFragment.java
  89. 4 10
      student/src/main/java/com/cooleshow/student/widgets/helper/JsInterfaceAccomPanyUtils.java
  90. 3 8
      student/src/main/java/com/cooleshow/student/widgets/helper/JsInterfaceUtils.java
  91. 1 2
      teacher/build.gradle
  92. 7 0
      teacher/src/main/java/com/cooleshow/teacher/App.java
  93. 13 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MainActivity.java
  94. 4 9
      teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceAccomPanyUtils.java
  95. 6 7
      teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceHelper.java
  96. 3 8
      teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceUtils.java

+ 0 - 2
BaseLibrary/build.gradle

@@ -194,9 +194,7 @@ dependencies {
 //    api 'com.sina.weibo.sdk:core:10.10.0'  不能用
 
 
-    api project(path: ':camerakit')
     api 'org.java-websocket:Java-WebSocket:1.5.1'
-    api project(path: ':midiplaylib')
     api 'org.greenrobot:eventbus:3.1.1'
 
     api 'com.github.bingoogolapple.BGAQRCode-Android:zxing:1.3.8'

+ 4 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java

@@ -179,4 +179,8 @@ public abstract class WebConstants {
     public static final String ICP_QUERY = "https://beian.miit.gov.cn";////工信部网站
 
     public static final String MY_WORKS_SHARE = getBaseUrlH5() + "/#/shareCreation?id=%s";////我的作品分享地址
+
+    public static String getAccompanyUA() {
+        return WebConstants.WEB_UA_PARAMS + WebConstants.getCustomUAParams();
+    }
 }

+ 0 - 7
BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/WebStartHelper.java

@@ -41,13 +41,6 @@ public class WebStartHelper {
      * * @param id
      */
     public static void startAccompany(String id) {
-        ARouter.getInstance().build(RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
-                .withString("url", String.format(WebConstants.SCORE_DETAIL_PAGE, id))
-                .withBoolean("isHideTitle", true)
-                .withBoolean("statusBarTextColor", true)
-                .withBoolean("isOpenLight", true)
-                .withInt("orientation", 0)
-                .navigation();
     }
 
     /**

+ 8 - 8
accompany/src/main/java/com/daya/orchestra/accompany/js/JsInterfaceAccomPanyUtils.java

@@ -151,14 +151,14 @@ public class JsInterfaceAccomPanyUtils extends Object {
                     } catch (Exception e) {
                     }
 
-                    ARouter.getInstance().build(RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
-                            .withString("url", content.optString("url"))
-                            .withBoolean("isHideTitle", isHideTitle)
-                            .withBoolean("statusBarTextColor", statusBarTextColor)
-                            .withBoolean("isOpenLight", isOpenLight)
-                            .withInt("orientation", orientation)
-                            .withInt("c_orientation", c_orientation)
-                            .navigation();
+//                    ARouter.getInstance().build(RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
+//                            .withString("url", content.optString("url"))
+//                            .withBoolean("isHideTitle", isHideTitle)
+//                            .withBoolean("statusBarTextColor", statusBarTextColor)
+//                            .withBoolean("isOpenLight", isOpenLight)
+//                            .withInt("orientation", orientation)
+//                            .withInt("c_orientation", c_orientation)
+//                            .navigation();
 
                 } else if ("startEvaluating".equals(api)) {
                     if (onListener != null) {

+ 1 - 1
accompany/src/main/java/com/daya/orchestra/accompany/web/AccompanyActivity.java

@@ -78,7 +78,7 @@ import static com.cooleshow.base.common.WebConstants.WEB_URL;
  * @author Ryan
  * 类说明:
  */
-@Route(path = RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
+//@Route(path = RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
 public class AccompanyActivity extends BaseActivity<ActivityAccompanyBinding> {
     public static final String TAG = "AccompanyActivity";
     FrameLayout camera;

+ 1 - 0
accompanySDK/.gitignore

@@ -0,0 +1 @@
+/build

+ 49 - 0
accompanySDK/build.gradle

@@ -0,0 +1,49 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+apply plugin: 'org.jetbrains.kotlin.android'
+
+
+kapt {
+    arguments {
+        arg("AROUTER_MODULE_NAME", project.getName())
+        // 是否生成路由文档,"enable":生成文档,其他字符串不生成路由文档
+        arg("AROUTER_GENERATE_DOC", "enable")
+    }
+}
+
+android {
+    compileSdkVersion rootProject.ext.android['compileSdkVersion']
+
+    defaultConfig {
+        namespace 'com.daya.accompanysdk'
+        minSdkVersion rootProject.ext.android.minSdkVersion
+        targetSdkVersion rootProject.ext.android.targetSdkVersion
+
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        consumerProguardFiles "consumer-rules.pro"
+    }
+
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+        }
+    }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+}
+
+dependencies {
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    implementation 'androidx.appcompat:appcompat:1.3.0'
+    implementation 'com.google.android.material:material:1.4.0'
+    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+    testImplementation 'junit:junit:4.13.2'
+    api fileTree(dir: 'libs', include: ['*.jar','*.aar'])
+    implementation project(':BaseLibrary')
+    implementation project(':usercenter')
+    implementation 'com.airbnb.android:lottie:5.0.3'
+}

+ 0 - 0
accompanySDK/consumer-rules.pro


BIN
accompanySDK/libs/accompany_release_1.0.3_2410251726.aar


BIN
accompanySDK/libs/camerakit_release_1.0.0_2407171443.aar


BIN
accompanySDK/libs/ffmpegCmd-release_1.0.2_2410081548.aar


BIN
accompanySDK/libs/midiplaylib_release_1.0.0_2403011515.aar


+ 21 - 0
accompanySDK/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 26 - 0
accompanySDK/src/androidTest/java/com/daya/accompanysdk/ExampleInstrumentedTest.java

@@ -0,0 +1,26 @@
+package com.daya.accompanysdk;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+        assertEquals("com.daya.accompanysdk.test", appContext.getPackageName());
+    }
+}

+ 4 - 0
accompanySDK/src/main/AndroidManifest.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+
+</manifest>

+ 195 - 0
accompanySDK/src/main/java/com/daya/accompanysdk/engine/GlideEngine.java

@@ -0,0 +1,195 @@
+package com.daya.accompanysdk.engine;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.PointF;
+import android.view.View;
+import android.widget.ImageView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions;
+import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
+import com.bumptech.glide.request.RequestOptions;
+import com.bumptech.glide.request.target.BitmapImageViewTarget;
+import com.bumptech.glide.request.target.ImageViewTarget;
+import com.bumptech.glide.request.transition.DrawableCrossFadeFactory;
+import com.luck.picture.lib.engine.ImageEngine;
+import com.luck.picture.lib.listener.OnImageCompleteCallback;
+import com.luck.picture.lib.tools.MediaUtils;
+import com.luck.picture.lib.widget.longimage.ImageSource;
+import com.luck.picture.lib.widget.longimage.ImageViewState;
+import com.luck.picture.lib.widget.longimage.SubsamplingScaleImageView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
+
+/**
+ * Description:
+ * Copyright  : Copyright (c) 2019
+ * Company    : 大雅乐盟
+ * Author     : r
+ * Date       : 2019/12/21 16:36
+ */
+public class GlideEngine implements ImageEngine {
+
+    /**
+     * 加载图片
+     *
+     * @param context
+     * @param url
+     * @param imageView
+     */
+    @Override
+    public void loadImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
+        // * other https://www.jianshu.com/p/28f5bcee409f
+        DrawableCrossFadeFactory drawableCrossFadeFactory =
+                new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();
+        Glide.with(context)
+                .load(url)
+                .transition(DrawableTransitionOptions.withCrossFade(drawableCrossFadeFactory))
+                .into(imageView);
+    }
+
+    @Override
+    public void loadImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView, SubsamplingScaleImageView longImageView, OnImageCompleteCallback callback) {
+        DrawableCrossFadeFactory drawableCrossFadeFactory =
+                new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();
+        Glide.with(context)
+                .load(url)
+                .transition(DrawableTransitionOptions.withCrossFade(drawableCrossFadeFactory))
+                .into(imageView);
+    }
+
+
+//    /**
+//     * 加载网络图片适配长图方案
+//     * # 注意:此方法只有加载网络图片才会回调
+//     *
+//     * @param context
+//     * @param url
+//     * @param imageView
+//     * @param longImageView
+//     */
+//    @Override
+//    public void loadImage(@NonNull Context context, @NonNull String url,
+//                          @NonNull ImageView imageView,
+//                          SubsamplingScaleImageView longImageView) {
+//        Glide.with(context)
+//                .asBitmap()
+//                .load(url)
+//                .into(new ImageViewTarget<Bitmap>(imageView) {
+//                    @Override
+//                    protected void setResource(@Nullable Bitmap resource) {
+//                        if (resource != null) {
+//                            boolean eqLongImage = MediaUtils.isLongImg(resource.getWidth(),
+//                                    resource.getHeight());
+//                            longImageView.setVisibility(eqLongImage ? View.VISIBLE : View.GONE);
+//                            imageView.setVisibility(eqLongImage ? View.GONE : View.VISIBLE);
+//                            if (eqLongImage) {
+//                                // 加载长图
+//                                longImageView.setQuickScaleEnabled(true);
+//                                longImageView.setZoomEnabled(true);
+//                                longImageView.setPanEnabled(true);
+//                                longImageView.setDoubleTapZoomDuration(100);
+//                                longImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP);
+//                                longImageView.setDoubleTapZoomDpi(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER);
+//                                longImageView.setImage(ImageSource.bitmap(resource),
+//                                        new ImageViewState(0, new PointF(0, 0), 0));
+//                            } else {
+//                                // 普通图片
+//                                imageView.setImageBitmap(resource);
+//                            }
+//                        }
+//                    }
+//                });
+//    }
+
+    /**
+     * 加载相册目录
+     *
+     * @param context   上下文
+     * @param url       图片路径
+     * @param imageView 承载图片ImageView
+     */
+    @Override
+    public void loadFolderImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
+        // * other https://www.jianshu.com/p/28f5bcee409f
+        DrawableCrossFadeFactory drawableCrossFadeFactory =
+                new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();
+        Glide.with(context)
+                .asBitmap()
+                .load(url)
+                .override(180, 180)
+                .centerCrop()
+                .sizeMultiplier(0.5f)
+                .apply(new RequestOptions().placeholder(com.luck.picture.lib.R.drawable.picture_image_placeholder))
+                .transition(BitmapTransitionOptions.withCrossFade(drawableCrossFadeFactory))
+                .into(new BitmapImageViewTarget(imageView) {
+                    @Override
+                    protected void setResource(Bitmap resource) {
+                        RoundedBitmapDrawable circularBitmapDrawable =
+                                RoundedBitmapDrawableFactory.
+                                        create(context.getResources(), resource);
+                        circularBitmapDrawable.setCornerRadius(8);
+                        imageView.setImageDrawable(circularBitmapDrawable);
+                    }
+                });
+    }
+
+
+//    /**
+//     * 加载gif
+//     *
+//     * @param context   上下文
+//     * @param url       图片路径
+//     * @param imageView 承载图片ImageView
+//     */
+//    @Override
+//    public void loadAsGifImage(@NonNull Context context, @NonNull String url,
+//                               @NonNull ImageView imageView) {
+//        Glide.with(context)
+//                .asGif()
+//                .load(url)
+//                .into(imageView);
+//    }
+
+    /**
+     * 加载图片列表图片
+     *
+     * @param context   上下文
+     * @param url       图片路径
+     * @param imageView 承载图片ImageView
+     */
+    @Override
+    public void loadGridImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
+        // * other https://www.jianshu.com/p/28f5bcee409f
+        DrawableCrossFadeFactory drawableCrossFadeFactory =
+                new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();
+        Glide.with(context)
+                .load(url)
+                .override(200, 200)
+                .centerCrop()
+                .apply(new RequestOptions().placeholder(com.luck.picture.lib.R.drawable.picture_image_placeholder))
+                .transition(DrawableTransitionOptions.withCrossFade(drawableCrossFadeFactory))
+                .into(imageView);
+    }
+
+
+    private GlideEngine() {
+    }
+
+    private static GlideEngine instance;
+
+    public static GlideEngine createGlideEngine() {
+        if (null == instance) {
+            synchronized (GlideEngine.class) {
+                if (null == instance) {
+                    instance = new GlideEngine();
+                }
+            }
+        }
+        return instance;
+    }
+}

+ 247 - 0
accompanySDK/src/main/java/com/daya/accompanysdk/manager/AccompanyHelper.java

@@ -0,0 +1,247 @@
+package com.daya.accompanysdk.manager;
+
+import android.app.Activity;
+import android.app.Application;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.webkit.ClientCertRequest;
+import android.webkit.WebView;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.common.BaseConstant;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.data.auth.Https;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.utils.LOG;
+import com.cooleshow.base.utils.helper.upload.UploadHelper;
+import com.cooleshow.usercenter.constants.UserConstants;
+import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.R;
+import com.daya.accompanysdk.engine.GlideEngine;
+import com.daya.accompanysdk.utils.Utils;
+import com.daya.accompanysdk.widget.CustomDelayCheckView;
+import com.daya.orchestra.accompany.bean.AccompanyStartParams;
+import com.daya.orchestra.accompany.bean.MusicSaveParams;
+import com.daya.orchestra.accompany.bean.WebConfig;
+import com.daya.orchestra.accompany.callback.ResultCallback;
+import com.daya.orchestra.accompany.common.AccompanyEventImpl;
+import com.daya.orchestra.accompany.common.AccompanyManager;
+import com.daya.orchestra.accompany.helper.CacheHelper;
+import com.daya.orchestra.accompany.widget.BaseDelayCheckView;
+import com.luck.picture.lib.PictureSelector;
+import com.luck.picture.lib.config.PictureConfig;
+import com.luck.picture.lib.config.PictureMimeType;
+import com.luck.picture.lib.tools.SPUtils;
+
+import org.json.JSONObject;
+
+import java.io.File;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import okhttp3.internal.platform.Platform;
+import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
+
+/**
+ * Author by pq, Date on 2024/1/17.
+ */
+public class AccompanyHelper {
+
+    private AccompanyHelper() {
+    }
+
+    private static class AccompanyHelperHolder {
+        private static AccompanyHelper sHelper = new AccompanyHelper();
+    }
+
+    public static AccompanyHelper getInstance() {
+        return AccompanyHelperHolder.sHelper;
+    }
+
+    public void initAccompany(Application application) {
+        AccompanyManager.getInstance().init(application, new AccompanyEventImpl() {
+            @Override
+            public void showPermissionTipDialog(FragmentManager fragmentManager, Context context, String s, String s1) {
+                Utils.showPermissionTipDialog2(fragmentManager, context, s, s1);
+            }
+
+            @Override
+            public String getBaseServerUrl() {
+                return BaseConstant.SERVER_ADDRESS;
+            }
+
+            @Override
+            public void toUpload(Activity activity, File file, String s, String s1, ResultCallback<Object> resultCallback) {
+                UploadHelper uploadHelper = new UploadHelper(activity, s, s1);
+                uploadHelper.uploadFile(file);
+                uploadHelper.setUpLoadCallBack(new UploadHelper.UpLoadCallBack() {
+                    @Override
+                    public void onSuccess(String url) {
+                        if (resultCallback != null) {
+                            resultCallback.onSuccess(url);
+                        }
+                    }
+
+                    @Override
+                    protected void onFailure() {
+                        if (resultCallback != null) {
+                            resultCallback.onFail(0, "");
+                        }
+                    }
+
+                });
+            }
+
+            @Override
+            public void logout() {
+                ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
+                        .withString(UserConstants.PHONE_NUM_KEY, UserHelper.getUserPhone())
+                        .navigation();
+            }
+
+            @Override
+            public void goChat(String s, String s1) {
+
+            }
+
+            @Override
+            public void openWebView(JSONObject jsonObject) {
+                try {
+                    JSONObject content = jsonObject.getJSONObject("content");
+                    boolean isHideTitle = false;
+                    boolean statusBarTextColor = false;
+                    boolean isOpenLight = false;
+                    boolean showLoadingAnim = false;
+                    int orientation = -1;
+                    int c_orientation = -1;
+                    try {
+                        isHideTitle = content.optBoolean("isHideTitle");
+                        statusBarTextColor = content.optBoolean("statusBarTextColor");
+                        isOpenLight = content.optBoolean("isOpenLight");
+                        showLoadingAnim = content.optBoolean("showLoadingAnim");
+                        orientation = content.optInt("orientation");
+                        c_orientation = content.optInt("c_orientation");
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+
+                    String path = RouterPath.WebCenter.ACTIVITY_HTML;
+                    ARouter.getInstance().build(path)
+                            .withString(WebConstants.WEB_URL, content.optString("url"))
+                            .withBoolean("isHideTitle", isHideTitle)
+                            .withBoolean("statusBarTextColor", statusBarTextColor)
+                            .withBoolean("isOpenLight", isOpenLight)
+                            .withBoolean("showLoadingAnim", showLoadingAnim)
+                            .withInt("orientation", orientation)
+                            .withInt("c_orientation", c_orientation)
+                            .navigation();
+
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+
+            @Override
+            public boolean onReceivedClientCertRequest(WebView view, ClientCertRequest request) {
+                LOG.i("onReceivedClientCertRequest");
+                boolean proceed = Https.proceed(com.cooleshow.base.utils.Utils.getApp(), request);
+                return proceed;
+            }
+
+            @Override
+            public void openMusicMergePage(Activity activity, MusicSaveParams musicSaveParams, int requestCode) {
+                LOG.i("openMusicMergePage:"+musicSaveParams.getMusicSheetId()+"\nmusicRenderType:"+musicSaveParams.getMusicRenderType()+"\nspeedRate:"+musicSaveParams.getEvaluationSpeed());
+                ARouter.getInstance().build(RouterPath.MusicTuner.MUSIC_MERGE_PAGE)
+                        .withString("accompanyUrl", musicSaveParams.getAccompanyUrl())
+                        .withString("recordFilePath", musicSaveParams.getRecordFilePath())
+                        .withString("recordId", musicSaveParams.getRecordId())
+                        .withString("title", musicSaveParams.getTitle())
+                        .withString("musicSheetId", musicSaveParams.getMusicSheetId())
+                        .withString("musicRenderType", musicSaveParams.getMusicRenderType())
+                        .withString("coverImg", musicSaveParams.getCoverImg())
+                        .withFloat("speedRate", musicSaveParams.getEvaluationSpeed())
+                        .withInt("part-index", musicSaveParams.getPartIndex())
+                        .withInt("defaultDelay", musicSaveParams.getDefaultDelay())
+                        .withInt("evaluateDelay", musicSaveParams.getEvaluateDelay())//此字段给IOS使用
+                        .withInt("c_orientation", ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
+                        .navigation(activity, requestCode);
+            }
+
+            @Override
+            public void selectPicture(Fragment fragment,ActivityResultLauncher<Intent> activityResultLauncher) {
+                PictureSelector.create(fragment)
+                        .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
+                        .loadImageEngine(GlideEngine.createGlideEngine())
+                        .theme(R.style.picture_daya_style)// 主题样式设置 具体参考 values/styles   用法:R .style.picture.white.style
+                        .selectionMode(PictureConfig.SINGLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
+                        .enableCrop(false)// 是否裁剪 true or false
+                        .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false    true or false
+                        .compress(true)// 是否压缩 true or false
+                        .circleDimmedLayer(false)// 是否圆形裁剪 true or false
+                        .forResult(activityResultLauncher);
+            }
+
+            @Override
+            public BaseDelayCheckView getDelayCheckView(Context context) {
+                return new CustomDelayCheckView(context);
+            }
+        });
+        AccompanyManager.getInstance().setLogDebugMode(com.cooleshow.base.BuildConfig.DEBUG);
+        setWebConfig();
+        AccompanyManager.getInstance().clearDelay();//清除延迟检测值
+        AccompanyManager.getInstance().setLoadingAnimRes(R.layout.accompany_loading_layout,R.drawable.icon_accompany_back);
+    }
+
+    private void setWebConfig(){
+        WebConfig webConfig = new WebConfig();
+        webConfig.setWeb_UA_params(WebConstants.getAccompanyUA());
+        webConfig.setWebJsInterfaceName(WebConstants.WEB_JS_INTERFACE);
+        webConfig.setCustomWebSocketUrl(WebConstants.getWebSocketUrl());
+        AccompanyManager.getInstance().setWebConfig(webConfig);
+    }
+
+    public void loginAccompany(String userId, String userToken) {
+        AccompanyManager.getInstance().login(userId, userToken);
+    }
+
+    public void startAccompanyPage(Context context, String url) {
+        startAccompanyPage(context, url, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE, -1);
+    }
+
+    public void startAccompanyPage(Context context, String url, int orientation) {
+        startAccompanyPage(context, url, orientation, -1);
+    }
+
+
+    public void startAccompanyPage(Context context, String url, int orientation, int c_orientation) {
+        AccompanyStartParams accompanyStartParams = new AccompanyStartParams();
+        accompanyStartParams.setUrl(url);
+        accompanyStartParams.setOrientation(orientation);
+        accompanyStartParams.setC_orientation(c_orientation);
+        accompanyStartParams.setHideTitle(true);
+        accompanyStartParams.setOpenLight(true);
+        //管理端和学校端可能存在切账号流程,所以每次进入之前重新设置下相关参数把
+        setWebConfig();
+        AccompanyManager.getInstance().startAccompany(context, accompanyStartParams);
+    }
+
+    /**
+     * 临时处理
+     * @param context
+     * @param url
+     * @param orientation
+     * @param c_orientation
+     */
+    public void startAccompanyPageByToken(Context context, String url, int orientation, int c_orientation){
+        boolean status = url.contains("?");
+        String userAuthorization = CacheHelper.getUserToken();
+        if (status) {
+            url = (url + "&Authorization=" + userAuthorization);
+        } else {
+            url = (url + "?Authorization=" + userAuthorization);
+        }
+        startAccompanyPage(context,url,orientation,c_orientation);
+    }
+}

+ 20 - 0
accompanySDK/src/main/java/com/daya/accompanysdk/utils/Utils.java

@@ -0,0 +1,20 @@
+package com.daya.accompanysdk.utils;
+
+import android.content.Context;
+import android.text.SpannableString;
+import android.view.View;
+import android.widget.TextView;
+
+import com.cooleshow.base.utils.UiUtils;
+import com.daya.accompanysdk.R;
+
+import androidx.fragment.app.FragmentManager;
+
+/**
+ * Author by pq, Date on 2024/10/9.
+ */
+public class Utils {
+    public static void showPermissionTipDialog2(FragmentManager fragmentmanager, Context context, String title, String tip) {
+        UiUtils.showPermissionTipDialog(fragmentmanager,context,title,tip);
+    }
+}

+ 212 - 0
accompanySDK/src/main/java/com/daya/accompanysdk/widget/CustomDelayCheckView.java

@@ -0,0 +1,212 @@
+package com.daya.accompanysdk.widget;
+
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.animation.LinearInterpolator;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+
+import com.airbnb.lottie.LottieAnimationView;
+import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.helper.QMUIDeviceHelper;
+import com.daya.accompanysdk.R;
+import com.daya.orchestra.accompany.widget.BaseDelayCheckView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.constraintlayout.widget.ConstraintSet;
+
+/**
+ * Author by pq, Date on 2024/10/14.
+ */
+public class CustomDelayCheckView extends BaseDelayCheckView {
+
+    private ImageView mIvBack;
+    private View mViewRetry;
+    private LottieAnimationView mViewAnim1;
+    private LottieAnimationView mViewAnim2;
+    private ImageView mIvBall;
+    private ImageView mIvCenter;
+    private ImageView mIvTip;
+    private LinearLayout mLlEarphoneTip;
+    private ObjectAnimator ballAnimator;
+    private ObjectAnimator mCenterAnim;
+    private ConstraintLayout mCsRoot;
+
+    public CustomDelayCheckView(@NonNull Context context) {
+        super(context);
+    }
+
+    public CustomDelayCheckView(@NonNull Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public CustomDelayCheckView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    @Override
+    protected int getLayoutRes() {
+        return R.layout.ac_custom_delay_check_layout;
+    }
+
+    @Override
+    public void initView() {
+        super.initView();
+        mIvBack = findViewById(R.id.iv_close);
+        mIvBall = findViewById(R.id.iv_ball);
+        ImageView iv_ball2 = findViewById(R.id.iv_ball2);
+        mViewAnim1 = findViewById(R.id.view_anim1);
+        mViewAnim2 = findViewById(R.id.view_anim2);
+        mIvTip = findViewById(R.id.iv_tip);
+        mViewRetry = findViewById(R.id.view_retry);
+        mIvCenter = findViewById(R.id.iv_center);
+        mLlEarphoneTip = findViewById(R.id.ll_earphone_tip);
+        mCsRoot = findViewById(R.id.cs_root);
+        fitPad();
+    }
+
+    private void fitPad() {
+        boolean isTablet = QMUIDeviceHelper.isTablet(getContext());
+        ConstraintSet constraintSet =new ConstraintSet();
+        constraintSet.clone(mCsRoot);
+        constraintSet.connect(R.id.iv_center,ConstraintSet.TOP, R.id.iv_tip, ConstraintSet.BOTTOM);
+        constraintSet.connect(R.id.iv_center,ConstraintSet.LEFT, ConstraintSet.PARENT_ID, ConstraintSet.LEFT);
+        constraintSet.connect(R.id.iv_center,ConstraintSet.RIGHT, ConstraintSet.PARENT_ID, ConstraintSet.RIGHT);
+        if(isTablet){
+            constraintSet.connect(R.id.iv_center,ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM);
+            constraintSet.setMargin(R.id.iv_tip,ConstraintSet.TOP, SizeUtils.dp2px(50));
+        }
+        constraintSet.applyTo(mCsRoot);
+    }
+
+    @Override
+    public void initData() {
+        super.initData();
+        ballAnimator = ObjectAnimator.ofFloat(mIvBall, "rotation", 0f, 360f);
+        ballAnimator.setDuration(8000);
+        ballAnimator.setRepeatCount(ValueAnimator.INFINITE);
+        ballAnimator.setInterpolator(new LinearInterpolator());
+        ballAnimator.start();
+
+        mCenterAnim = ObjectAnimator.ofFloat(mIvCenter, "translationY", 0f, 24f);
+        mCenterAnim.setDuration(1000);
+        mCenterAnim.setRepeatCount(ValueAnimator.INFINITE);
+        mCenterAnim.setInterpolator(new LinearInterpolator());
+        mCenterAnim.setRepeatMode(ValueAnimator.REVERSE);
+        mCenterAnim.start();
+
+        this.mLlEarphoneTip.setOnClickListener(new OnClickListener() {
+            public void onClick(View v) {
+                CustomDelayCheckView.this.mLlEarphoneTip.setVisibility(View.GONE);
+            }
+        });
+    }
+
+    @Override
+    public void showAnimStep(int step) {
+        if (mViewRetry != null) {
+            mViewRetry.setVisibility(step == CHECK_FAIL ? View.VISIBLE : View.GONE);
+        }
+        if (step != CHECK_COMPLETED) {
+            if (step == CHECK_PREPARE) {
+                resetAnim();
+            }
+            if (step == CHECK_FAIL_TIP_EARPHONE) {
+                mLlEarphoneTip.setVisibility(View.VISIBLE);
+                return;
+            } else {
+                mLlEarphoneTip.setVisibility(View.GONE);
+            }
+            int mainAnimRes = getMainAnimRes(step);
+            mIvCenter.setImageResource(mainAnimRes);
+            mIvTip.setImageResource(getTipImgRes(step));
+        } else {
+            handleCompletedAnim();
+        }
+    }
+
+    private void handleCompletedAnim() {
+
+    }
+
+    private int getMainAnimRes(int step) {
+        if (step == CHECK_PREPARE) {
+            return R.drawable.ac_check_prepare;
+        }
+        if (step == CHECK_ING) {
+            return R.drawable.ac_check_ing;
+        }
+        if (step == CHECK_SUCCESS) {
+            return R.drawable.ac_check_success;
+        }
+        if (step == CHECK_FAIL) {
+            return R.drawable.ac_check_fail;
+        }
+        return R.drawable.ac_check_prepare;
+    }
+
+    private void resetAnim() {
+
+    }
+
+    private int getTipImgRes(int step) {
+        if (step == CHECK_PREPARE) {
+            return R.drawable.ac_icon_delay_check_tip1;
+        }
+        if (step == CHECK_ING) {
+            return R.drawable.ac_icon_delay_check_tip2;
+        }
+        if (step == CHECK_SUCCESS) {
+            return R.drawable.ac_icon_delay_check_tip3;
+        }
+        if (step == CHECK_FAIL) {
+            return R.drawable.ac_icon_delay_check_tip4;
+        }
+        return R.drawable.ac_icon_delay_check_tip1;
+    }
+
+    @Override
+    public void setOnViewClickListener(OnClickListener onViewClickListener) {
+        super.setOnViewClickListener(onViewClickListener);
+        if (mIvBack != null) {
+            mIvBack.setOnClickListener(onViewClickListener);
+        }
+        if (mViewRetry != null) {
+            mViewRetry.setOnClickListener(onViewClickListener);
+        }
+    }
+
+    @Override
+    public void release() {
+        super.release();
+        if (mViewAnim1 != null) {
+            mViewAnim1.cancelAnimation();
+            mViewAnim1.clearAnimation();
+        }
+
+        if (mViewAnim2 != null) {
+            mViewAnim2.cancelAnimation();
+            mViewAnim2.clearAnimation();
+        }
+        if (mIvBall != null) {
+            mIvBall.clearAnimation();
+        }
+
+        if (mIvCenter != null) {
+            mIvCenter.clearAnimation();
+        }
+        if (ballAnimator != null) {
+            ballAnimator.cancel();
+            ballAnimator =null;
+        }
+        if (mCenterAnim != null) {
+            mCenterAnim.cancel();
+            mCenterAnim =null;
+        }
+    }
+}

BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_check_fail.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_check_ing.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_check_prepare.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_check_success.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_icon_back.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_icon_ball.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_icon_ball2.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_icon_delay_check_tip1.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_icon_delay_check_tip2.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_icon_delay_check_tip3.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_icon_delay_check_tip4.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/ac_icon_tip.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/icon_accompany_back.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/icon_accompany_loading_progress_bg.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/icon_accompany_no_permiss_bg1.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/icon_no_permission_cancel_bg.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/icon_no_permission_confirm_bg.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/icon_no_permission_content_bg.png


BIN
accompanySDK/src/main/res/drawable-xhdpi/icon_no_permission_tip_bg.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_check_fail.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_check_ing.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_check_prepare.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_check_success.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_delay_check_bg.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_delay_check_bg2.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_back.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_ball.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_ball2.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_delay_check_tip1.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_delay_check_tip2.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_delay_check_tip3.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_delay_check_tip4.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ac_icon_tip.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/bg_accompany_loading.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/ic_accompany_permissions_title.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/icon_accompany_back.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/icon_accompany_loading_progress_bg.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/icon_accompany_no_permiss_bg1.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/icon_no_permission_cancel_bg.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/icon_no_permission_confirm_bg.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/icon_no_permission_content_bg.png


BIN
accompanySDK/src/main/res/drawable-xxhdpi/icon_no_permission_tip_bg.png


+ 38 - 0
accompanySDK/src/main/res/drawable/shape_accompany_loading_progress_drawable.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- 背景 -->
+    <item
+        android:id="@android:id/background"
+        android:height="10dp"
+        android:gravity="center_vertical">
+        <shape>
+            <!-- 圆角 -->
+            <corners android:radius="5dp" />
+            <!--            背景色-->
+            <solid android:color="#54A3CFBD" />
+            <size android:height="10dp" />
+        </shape>
+    </item>
+    <!--    滑动条-->
+    <item
+        android:id="@android:id/progress"
+        android:height="10dp"
+        android:gravity="center_vertical">
+        <clip>
+            <bitmap
+                android:layout_width="match_parent"
+                android:src="@drawable/icon_accompany_loading_progress_bg" />
+        </clip>
+        <!--        <clip>-->
+        <!--            <shape>-->
+        <!--                &lt;!&ndash; 圆角 &ndash;&gt;-->
+        <!--                <corners android:radius="2dp" />-->
+        <!--                <gradient android:startColor="@color/main_style_color"-->
+        <!--                    android:endColor="@color/main_style_color"/>-->
+        <!--                &lt;!&ndash;            背景色&ndash;&gt;-->
+        <!--&lt;!&ndash;                <solid android:color="@color/color_2dc7aa"/>&ndash;&gt;-->
+        <!--                <size android:height="4dp"/>-->
+        <!--            </shape>-->
+        <!--        </clip>-->
+    </item>
+</layer-list>

+ 174 - 0
accompanySDK/src/main/res/layout/ac_custom_delay_check_layout.xml

@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:id="@+id/cs_root"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <ImageView
+        android:id="@+id/iv_bg"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scaleType="centerCrop"
+        android:src="@drawable/ac_delay_check_bg" />
+
+    <ImageView
+        android:scaleType="centerCrop"
+        android:visibility="visible"
+        android:id="@+id/iv_star"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:src="@drawable/ac_delay_check_bg2" />
+
+
+    <com.airbnb.lottie.LottieAnimationView
+        android:id="@+id/view_anim2"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_gravity="center"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:lottie_autoPlay="true"
+        app:lottie_imageAssetsFolder="acc_lottie/accompany/images/"
+        app:lottie_loop="true"
+        app:lottie_clipToCompositionBounds="false"
+        app:lottie_rawRes="@raw/ac_delaycheck_shooting_star_anim" />
+
+    <FrameLayout
+        android:id="@+id/fl_ball"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toRightOf="parent">
+
+        <ImageView
+            android:layout_marginBottom="12dp"
+            android:id="@+id/iv_ball"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="-40dp"
+            android:src="@drawable/ac_icon_ball" />
+    </FrameLayout>
+
+    <FrameLayout
+        android:id="@+id/fl_ball2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent">
+
+        <ImageView
+            android:layout_marginBottom="70dp"
+            android:id="@+id/iv_ball2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="-45dp"
+            android:src="@drawable/ac_icon_ball2" />
+    </FrameLayout>
+
+    <com.airbnb.lottie.LottieAnimationView
+        android:id="@+id/view_anim1"
+        android:layout_width="204dp"
+        android:layout_height="130dp"
+        android:layout_gravity="center"
+        android:layout_marginTop="84dp"
+        android:layout_marginStart="32dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:lottie_autoPlay="true"
+        app:lottie_imageAssetsFolder="acc_lottie/accompany/images/"
+        app:lottie_loop="true"
+        app:lottie_clipToCompositionBounds="false"
+        app:lottie_rawRes="@raw/ac_delaycheck_bubble_anim" />
+
+
+
+    <ImageView
+        android:id="@+id/iv_close"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingStart="27dp"
+        android:paddingTop="17dp"
+        android:src="@drawable/ac_icon_back"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <ImageView
+        app:layout_constraintBottom_toTopOf="@+id/iv_center"
+        android:id="@+id/iv_tip"
+        android:layout_width="0dp"
+        app:layout_constraintWidth_percent="0.418"
+        android:layout_height="wrap_content"
+        android:adjustViewBounds="true"
+        android:layout_marginTop="20dp"
+        app:layout_constraintVertical_chainStyle="packed"
+        android:src="@drawable/ac_icon_delay_check_tip1"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <View
+        android:id="@+id/view_retry"
+        android:layout_width="100dp"
+        android:layout_height="50dp"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="@+id/iv_tip"
+        app:layout_constraintRight_toRightOf="@+id/iv_tip" />
+
+
+    <ImageView
+        app:layout_constraintTop_toBottomOf="@+id/iv_tip"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        android:src="@drawable/ac_check_prepare"
+        android:id="@+id/iv_center"
+        android:layout_width="0dp"
+        android:adjustViewBounds="true"
+        app:layout_constraintWidth_percent="0.383"
+        android:layout_height="wrap_content"/>
+
+
+    <LinearLayout
+        android:visibility="gone"
+        android:id="@+id/ll_earphone_tip"
+        android:layout_marginBottom="46dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_width="wrap_content"
+        android:layout_height="38dp"
+        android:background="@drawable/acc_shape_70000000_19dp"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        android:paddingStart="11dp"
+        android:paddingEnd="7dp"
+        tools:visibility ="visible"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ac_icon_tip" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingStart="4dp"
+            android:text="请断开耳机连接噢~"
+            android:textColor="@color/white"
+            android:textSize="@dimen/sp_14" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="24dp"
+            android:layout_marginStart="27dp"
+            android:background="@drawable/acc_shape_white_12dp"
+            android:gravity="center"
+            android:paddingStart="10dp"
+            android:paddingEnd="10dp"
+            android:text="我知道了"
+            android:textColor="@color/color_01c1b5"
+            android:textSize="@dimen/sp_14" />
+
+    </LinearLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 84 - 0
accompanySDK/src/main/res/layout/accompany_loading_layout.xml

@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/ll_loading"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <ImageView
+        android:id="@+id/iv_loading_bg"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scaleType="centerCrop"
+        android:src="@drawable/bg_accompany_loading" />
+
+    <com.airbnb.lottie.LottieAnimationView
+        android:id="@+id/view_loading_anim"
+        android:layout_width="0dp"
+        app:layout_constraintWidth_percent="0.37"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="20dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:lottie_autoPlay="false"
+        app:lottie_clipToCompositionBounds="false"
+        app:lottie_loop="true"
+        app:lottie_rawRes="@raw/accompany_loading" />
+
+    <TextView
+        android:id="@+id/tv_loading_tip"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="13dp"
+        android:text="@string/accompany_loading_tip"
+        android:textColor="@color/color_777777"
+        android:textSize="14dp"
+        app:layout_constraintBottom_toTopOf="@+id/progress"
+        app:layout_constraintLeft_toLeftOf="@+id/progress"
+        app:layout_constraintRight_toRightOf="@+id/progress" />
+
+    <ProgressBar
+        android:id="@+id/progress"
+        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
+        android:layout_width="0dp"
+        app:layout_constraintWidth_percent="0.36"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="34dp"
+        android:layout_marginTop="16dp"
+        android:layout_marginEnd="34dp"
+        android:layout_marginBottom="41dp"
+        android:max="100"
+        android:minWidth="300dp"
+        android:progress="50"
+        android:progressDrawable="@drawable/shape_accompany_loading_progress_drawable"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent" />
+
+
+    <View
+        android:id="@+id/view_status_bar"
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+
+    <ImageView
+        android:id="@+id/loading_back"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="15dp"
+        android:layout_marginTop="5dp"
+        android:padding="13dp"
+        android:src="@drawable/icon_accompany_back"
+        android:visibility="gone"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/view_status_bar"
+        tools:visibility="visible" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 161 - 0
accompanySDK/src/main/res/layout/accompany_permissions_popu2.xml

@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center"
+    android:orientation="vertical"
+    tools:ignore="MissingDefaultResource">
+
+    <ImageView
+        android:layout_marginBottom="20dp"
+        app:layout_constraintRight_toRightOf="@+id/cs_content"
+        app:layout_constraintLeft_toLeftOf="@+id/cs_content"
+        app:layout_constraintBottom_toBottomOf="@+id/cs_content"
+        app:layout_constraintTop_toTopOf="@+id/cs_content"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_width="wrap_content"
+        android:layout_gravity="center"
+        android:id="@+id/cs_content"
+        android:layout_height="wrap_content">
+
+
+        <ImageView
+            android:id="@+id/iv_top"
+            android:layout_width="206dp"
+            android:layout_height="wrap_content"
+            android:adjustViewBounds="true"
+            android:src="@drawable/icon_no_permission_tip_bg"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <View
+            android:id="@+id/view_help2"
+            app:layout_constraintTop_toTopOf="parent"
+            android:layout_marginEnd="39dp"
+            app:layout_constraintRight_toRightOf="@+id/iv_top"
+            android:layout_width="1px"
+            android:layout_height="1px"/>
+
+
+        <ImageView
+            app:layout_constraintLeft_toLeftOf="@+id/view_help2"
+            app:layout_constraintTop_toTopOf="parent"
+            android:src="@drawable/icon_no_permission_content_bg"
+            android:id="@+id/iv_content_bg"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+
+        <TextView
+            android:id="@+id/tv_content"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/dp_10"
+            android:layout_marginEnd="@dimen/dp_10"
+            android:textColor="@color/color_080808"
+            android:textSize="@dimen/dp_14"
+            android:paddingBottom="15dp"
+            android:textStyle="bold"
+            tools:text="请开启相机问权限请开启相机问权限"
+            app:layout_constraintBottom_toBottomOf="@+id/iv_content_bg"
+            app:layout_constraintEnd_toEndOf="@+id/iv_content_bg"
+            app:layout_constraintStart_toStartOf="@+id/iv_content_bg"
+            app:layout_constraintTop_toTopOf="@id/iv_content_bg" />
+
+        <View
+            android:layout_marginTop="7dp"
+            app:layout_constraintLeft_toLeftOf="@+id/iv_top"
+            android:id="@+id/view_help"
+            app:layout_constraintTop_toBottomOf="@+id/iv_top"
+            android:layout_width="1px"
+            android:layout_height="1px"/>
+
+        <ImageView
+            android:id="@+id/btn_cancel"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="17dp"
+            app:layout_constraintRight_toLeftOf="@+id/btn_commit"
+            android:src="@drawable/icon_no_permission_cancel_bg"
+            app:layout_constraintLeft_toLeftOf="@+id/iv_top"
+            app:layout_constraintBottom_toTopOf="@+id/view_help" />
+
+        <ImageView
+            android:id="@+id/btn_commit"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            app:layout_constraintLeft_toRightOf="@+id/btn_cancel"
+            android:src="@drawable/icon_no_permission_confirm_bg"
+            app:layout_constraintRight_toRightOf="@+id/iv_top"
+            app:layout_constraintTop_toTopOf="@+id/btn_cancel" />
+
+        <!--            <TextView-->
+        <!--                android:id="@+id/btn_cancel"-->
+        <!--                android:layout_width="wrap_content"-->
+        <!--                android:layout_height="wrap_content"-->
+        <!--                android:layout_marginStart="@dimen/dp_20"-->
+        <!--                android:layout_marginTop="@dimen/dp_24"-->
+        <!--                android:layout_marginEnd="@dimen/dp_30"-->
+        <!--                android:layout_marginBottom="@dimen/dp_15"-->
+        <!--                android:background="@drawable/bg_grayf2_45dp_shape"-->
+        <!--                android:paddingStart="@dimen/dp_30"-->
+        <!--                android:paddingTop="@dimen/dp_7"-->
+        <!--                android:paddingEnd="@dimen/dp_30"-->
+        <!--                android:paddingBottom="@dimen/dp_7"-->
+        <!--                android:text="不允许"-->
+        <!--                android:textColor="@color/colorPrimary"-->
+        <!--                android:textSize="@dimen/dp_14"-->
+        <!--                app:layout_constraintBottom_toBottomOf="parent"-->
+        <!--                app:layout_constraintEnd_toStartOf="@id/btn_commit"-->
+        <!--                app:layout_constraintStart_toStartOf="parent"-->
+        <!--                app:layout_constraintTop_toBottomOf="@id/tv_content" />-->
+
+        <!--            <TextView-->
+        <!--                android:id="@+id/btn_commit"-->
+        <!--                android:layout_width="wrap_content"-->
+        <!--                android:layout_height="wrap_content"-->
+        <!--                android:layout_marginStart="@dimen/dp_10"-->
+        <!--                android:layout_marginTop="@dimen/dp_24"-->
+        <!--                android:layout_marginEnd="@dimen/dp_20"-->
+        <!--                android:layout_marginBottom="@dimen/dp_15"-->
+        <!--                android:background="@drawable/btn_primary_default_shape"-->
+        <!--                android:paddingStart="@dimen/dp_30"-->
+        <!--                android:paddingTop="@dimen/dp_7"-->
+        <!--                android:paddingEnd="@dimen/dp_30"-->
+        <!--                android:paddingBottom="@dimen/dp_7"-->
+        <!--                android:text="去开启"-->
+        <!--                android:textColor="@color/white"-->
+        <!--                android:textSize="@dimen/dp_14"-->
+        <!--                app:layout_constraintBottom_toBottomOf="parent"-->
+        <!--                app:layout_constraintEnd_toEndOf="parent"-->
+        <!--                app:layout_constraintStart_toEndOf="@id/btn_cancel"-->
+        <!--                app:layout_constraintTop_toBottomOf="@id/tv_content" />-->
+
+
+        <TextView
+            android:id="@+id/tv_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/dp_5"
+            android:background="@drawable/ic_accompany_permissions_title"
+            android:gravity="center"
+            android:paddingBottom="@dimen/dp_5"
+            android:text="提示"
+            android:textColor="@color/white"
+            android:textSize="@dimen/dp_16"
+            android:visibility="gone"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

File diff suppressed because it is too large
+ 0 - 0
accompanySDK/src/main/res/raw/ac_delaycheck_bubble_anim.json


File diff suppressed because it is too large
+ 0 - 0
accompanySDK/src/main/res/raw/ac_delaycheck_shooting_star_anim.json


File diff suppressed because it is too large
+ 0 - 0
accompanySDK/src/main/res/raw/accompany_loading.json


File diff suppressed because it is too large
+ 0 - 0
accompanySDK/src/main/res/raw/accompany_loading_portrait.json


BIN
accompanySDK/src/main/res/raw/feeble.wav


BIN
accompanySDK/src/main/res/raw/midstrong.wav


+ 4 - 0
accompanySDK/src/main/res/values/colors.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="color_080808">#080808</color>
+</resources>

+ 4 - 0
accompanySDK/src/main/res/values/strings.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="accompany_loading_tip">正在努力加载中,请稍等...</string>
+</resources>

+ 56 - 0
accompanySDK/src/main/res/values/styles.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <style name="picture.daya.style" parent="AppTheme">
+        <!-- Customize your theme here. -->
+        <!--标题栏背景色-->
+        <item name="colorPrimary">@color/colorPrimary</item>
+        <!--状态栏背景色-->
+        <item name="colorPrimaryDark">@color/colorPrimary</item>
+        <!--是否改变图片列表界面状态栏字体颜色为黑色-->
+        <item name="picture.statusFontColor">false</item>
+        <!--返回键图标-->
+        <item name="picture.leftBack.icon">@drawable/picture_icon_back</item>
+        <!--标题下拉箭头-->
+        <item name="picture.arrow_down.icon">@drawable/picture_icon_arrow_down</item>
+        <!--标题上拉箭头-->
+        <item name="picture.arrow_up.icon">@drawable/picture_icon_arrow_up</item>
+        <!--标题文字颜色-->
+        <item name="picture.title.textColor">@color/white</item>
+        <!--标题栏右边文字-->
+        <item name="picture.right.textColor">@color/white</item>
+        <!--图片列表勾选样式-->
+        <item name="picture.checked.style">@drawable/checkbox_selector</item>
+        <!--开启图片列表勾选数字模式-->
+        <item name="picture.style.checkNumMode">false</item>
+        <!--选择图片样式0/9-->
+        <item name="picture.style.numComplete">false</item>
+        <!--图片列表底部背景色-->
+        <item name="picture.bottom.bg">@color/colorPrimary</item>
+        <!--图片列表预览文字颜色-->
+        <item name="picture.preview.textColor">@color/white</item>
+        <!--图片列表已完成文字颜色-->
+        <item name="picture.complete.textColor">@color/white</item>
+        <!--图片已选数量圆点背景色-->
+        <item name="picture.num.style">@drawable/picture_num_oval</item>
+        <!--预览界面标题文字颜色-->
+        <item name="picture.ac_preview.title.textColor">@color/white</item>
+        <!--预览界面已完成文字颜色-->
+        <item name="picture.ac_preview.complete.textColor">@color/white</item>
+        <!--预览界面标题栏背景色-->
+        <item name="picture.ac_preview.title.bg">@color/colorPrimary</item>
+        <!--预览界面底部背景色-->
+        <item name="picture.ac_preview.bottom.bg">@color/colorPrimary</item>
+        <!--预览界面返回箭头-->
+        <item name="picture.preview.leftBack.icon">@drawable/picture_icon_back</item>
+        <!--是否改变预览界面状态栏字体颜色为黑色-->
+        <!--<item name="picture.preview.statusFontColor">false</item>-->
+        <!--裁剪页面标题背景色-->
+        <item name="picture.crop.toolbar.bg">@color/colorPrimary</item>
+        <!--裁剪页面状态栏颜色-->
+        <item name="picture.crop.status.color">@color/colorPrimary</item>
+        <!--裁剪页面标题文字颜色-->
+        <item name="picture.crop.title.color">@color/white</item>
+        <!--相册文件夹列表选中图标-->
+        <item name="picture.folder_checked_dot">@drawable/picture_orange_oval</item>
+    </style>
+</resources>

+ 17 - 0
accompanySDK/src/test/java/com/daya/accompanysdk/ExampleUnitTest.java

@@ -0,0 +1,17 @@
+package com.daya.accompanysdk;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() {
+        assertEquals(4, 2 + 2);
+    }
+}

+ 1 - 0
chatModule/build.gradle

@@ -61,6 +61,7 @@ dependencies {
     api project(':tuigroup')
     api project(':tuiofflinepush')
     api project(':tuicontact')
+    implementation project(':accompanySDK')
 //    api project(':tuicallkit')
     //ARouter
     annotationProcessor("com.alibaba:arouter-compiler:$rootProject.ext.android.arouter_api_version")

+ 5 - 1
chatModule/src/main/java/com/cooleshow/chatmodule/message/holder/TUIChatShareMusicMessageHolder.java

@@ -5,11 +5,14 @@ import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.helper.WebStartHelper;
 import com.cooleshow.chatmodule.R;
 import com.cooleshow.chatmodule.adapter.ItemMarkAdapter;
 import com.cooleshow.chatmodule.message.bean.TUIChatShareMusicMessageBean;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean;
 import com.tencent.qcloud.tuikit.timcommon.classicui.widget.message.MessageContentHolder;
 
@@ -86,7 +89,8 @@ public class TUIChatShareMusicMessageHolder extends MessageContentHolder {
                 @Override
                 public void onClick(View v) {
                     if (shareMusicMessage != null && !TextUtils.isEmpty(shareMusicMessage.getSongId())) {
-                        WebStartHelper.startAccompany(shareMusicMessage.getSongId());
+                        String url = String.format(WebConstants.SCORE_DETAIL_PAGE, shareMusicMessage.getSongId());
+                        AccompanyHelper.getInstance().startAccompanyPage(Utils.getApp(),url);
                     }
                 }
             });

+ 1 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/ui/ChatFragment.java

@@ -132,6 +132,7 @@ public class ChatFragment extends BaseFragment<TcFragmentChatLayoutBinding> impl
         fragments.add(contactPersonListFragment);
         MessagePagerAdapter messagePagerAdapter = new MessagePagerAdapter(this);
         messagePagerAdapter.setData(fragments);
+        mViewBinding.viewPager.setOffscreenPageLimit(3);
         mViewBinding.viewPager.setAdapter(messagePagerAdapter);
         tabLayoutMediator.attach();
     }

+ 1 - 0
institution/build.gradle

@@ -73,6 +73,7 @@ dependencies {
     implementation project(':BaseLibrary')
     implementation project(':usercenter')
     implementation project(':chatModule')
+    implementation project(':accompanySDK')
     implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
     implementation 'cn.jiguang.sdk:jpush:5.3.1'  // 此处以JPush 4.7.0 版本为例。
 

+ 14 - 0
institution/src/main/java/com/cooleshow/institution/stu/ui/main/MainActivity.java

@@ -40,6 +40,7 @@ import com.cooleshow.institution.stu.utils.JGJumpUtils;
 import com.cooleshow.institution.stu.widget.ActivationCodeTipDialog;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.tbruyelle.rxpermissions3.RxPermissions;
 import com.tencent.bugly.crashreport.CrashReport;
 
@@ -63,6 +64,7 @@ public class MainActivity extends BaseMVPActivity<ActivityInstitutionMainLayoutB
     private HomeFragment mHomeFragment;
     private boolean isNeedSetPushId = true;
     private boolean isShowActivationCodeTip = true;
+    private boolean isNeedLoginAccompany = true;
 
     private static final int EXIT_APP_DELAY = 1000;
     private long lastTime = 0;
@@ -255,6 +257,7 @@ public class MainActivity extends BaseMVPActivity<ActivityInstitutionMainLayoutB
             JPushInterface.deleteAlias(getApplicationContext(), 1);
             isNeedSetPushId = true;
             isShowActivationCodeTip = true;
+            isNeedLoginAccompany = true;
             LogUtils.i("pq", "LoginStatusEvent:logout");
             finish();
         }
@@ -269,6 +272,7 @@ public class MainActivity extends BaseMVPActivity<ActivityInstitutionMainLayoutB
         UserHelper.saveUserInfo(data);
         connectIM();
         bindPushId();
+        loginAccompany();
         refreshUserInfo(data);
         //获取激活码信息
         if (isShowActivationCodeTip) {
@@ -320,6 +324,16 @@ public class MainActivity extends BaseMVPActivity<ActivityInstitutionMainLayoutB
         }
     }
 
+
+    private void loginAccompany() {
+        if (isNeedLoginAccompany && UserHelper.isLogin()) {
+            isNeedLoginAccompany = false;
+            String userId = UserHelper.getUserId();
+            String userAccessToken = UserHelper.getUserToken();
+            AccompanyHelper.getInstance().loginAccompany(userId, userAccessToken);
+        }
+    }
+
     public void onCountChanged(long count) {
         if (count > 0) {
             viewBinding.tvMsgCount.setVisibility(View.VISIBLE);

+ 1 - 1
musicMerge/build.gradle

@@ -54,9 +54,9 @@ android {
 }
 
 dependencies {
+    implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
     implementation project(':BaseLibrary')
     implementation project(':usercenter')
-    api project(path: ':ffmpegCmd')
     implementation 'androidx.appcompat:appcompat:1.3.0'
     implementation 'com.google.android.material:material:1.4.0'
     testImplementation 'junit:junit:4.13.2'

BIN
musicMerge/libs/ffmpegCmd-release_1.0.2_2410081548.aar


+ 1 - 1
rong_im/kit/src/main/java/io/rong/imkit/conversation/messgelist/provider/RCChatShareMusicProvider.java

@@ -109,7 +109,7 @@ public class RCChatShareMusicProvider extends BaseMessageItemProvider<RCChatShar
     @Override
     protected boolean onItemClick(ViewHolder holder, RCChatShareMusicMessage shareMusicMessage, UiMessage uiMessage, int position, List<UiMessage> list, IViewProviderListener<UiMessage> listener) {
         if (shareMusicMessage != null && !TextUtils.isEmpty(shareMusicMessage.getSongId())) {
-            WebStartHelper.startAccompany(shareMusicMessage.getSongId());
+//            WebStartHelper.startAccompany(shareMusicMessage.getSongId());
         }
         return true;
     }

+ 4 - 3
settings.gradle

@@ -18,7 +18,7 @@ pluginManagement {
 
 
 rootProject.name = "cooleShow"
-include ':student', ':BaseLibrary',':camerakit',':midiplaylib'
+include ':student', ':BaseLibrary'
 
 include ':teacher'
 
@@ -31,7 +31,7 @@ include ':live_teaching'
 include ':rong_im:common_im_ui'
 include ':metronome'
 include ':musictuner'
-include ':ffmpegCmd'
+//include ':ffmpegCmd'
 
 
 // 引入内部组件通信模块 (必要模块)
@@ -84,4 +84,5 @@ include ':tclive'
 include ':classRoom'
 include ':institution'
 include ':musicMerge'
-include ':accompany'
+//include ':accompany'
+include ':accompanySDK'

+ 1 - 2
student/build.gradle

@@ -121,13 +121,12 @@ dependencies {
 //    implementation project(path: ':live_teaching')
     implementation project(path: ':metronome')
     implementation project(path: ':musictuner')
-    implementation project(path: ':ffmpegCmd')
     implementation project(path: ':chatModule')
     implementation project(path: ':tclive')
     implementation project(path: ':classRoom')
     implementation project(path: ':institution')
     implementation project(path: ':musicMerge')
-    implementation project(path: ':accompany')
+    implementation project(path: ':accompanySDK')
     implementation "com.alibaba:arouter-api:$rootProject.ext.android.arouter_api_version"
     kapt "com.alibaba:arouter-compiler:$rootProject.ext.android.arouter_api_version"
 

+ 6 - 0
student/src/main/java/com/cooleshow/student/App.java

@@ -20,6 +20,7 @@ import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.widgets.CustomRefreshHeader;
 import com.cooleshow.student.helper.InitHelper;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.liulishuo.filedownloader.FileDownloader;
 import com.liulishuo.filedownloader.connection.FileDownloadUrlConnection;
 import com.liulishuo.filedownloader.services.ForegroundServiceConfig;
@@ -87,6 +88,11 @@ public class App extends BaseApplication {
         initBugly();
         initIM();
         initUmeng();
+        initAccompany();
+    }
+
+    private void initAccompany() {
+        AccompanyHelper.getInstance().initAccompany(this);
     }
 
     private void initJiguang(){

+ 13 - 0
student/src/main/java/com/cooleshow/student/ui/main/MainActivity.java

@@ -49,6 +49,7 @@ import com.cooleshow.student.databinding.ActivityMainBinding;
 import com.cooleshow.student.presenter.main.MainPresenter;
 import com.cooleshow.usercenter.bean.StudentUserInfo;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.google.android.material.bottomnavigation.BottomNavigationView;
 import com.tbruyelle.rxpermissions3.RxPermissions;
 import com.tencent.bugly.crashreport.CrashReport;
@@ -80,6 +81,7 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
     private static final int EXIT_APP_DELAY = 1000;
     private long lastTime = 0;
     private boolean isNeedSetPushId = true;
+    private boolean isNeedLoginAccompany = true;
     private String floatViewEventUrl = "";
     private IUnReadMessageObserver mUnReadMessageObserver = new IUnReadMessageObserver() {
         @Override
@@ -385,6 +387,7 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
             JPushInterface.deleteAlias(getApplicationContext(), 1);
             CommonConfig.isShowHomeFlashPage = true;
             isNeedSetPushId = true;
+            isNeedLoginAccompany = true;
             LogUtils.i("pq", "LoginStatusEvent:logout");
             finish();
         }
@@ -404,6 +407,7 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
         UserHelper.saveUserInfo(userInfo);
         connectIM();
         bindPushId();
+        loginAccompany();
     }
 
     private void bindPushId() {
@@ -420,6 +424,15 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
         }
     }
 
+    private void loginAccompany() {
+        if (isNeedLoginAccompany && UserHelper.isLogin()) {
+            isNeedLoginAccompany = false;
+            String userId = UserHelper.getUserId();
+            String userAccessToken = UserHelper.getUserToken();
+            AccompanyHelper.getInstance().loginAccompany(userId, userAccessToken);
+        }
+    }
+
     @Override
     protected ActivityMainBinding getLayoutView() {
         return ActivityMainBinding.inflate(getLayoutInflater());

+ 9 - 3
student/src/main/java/com/cooleshow/student/ui/web/AccompanyFragment.java

@@ -1758,14 +1758,16 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
             midiFileSpeed = obj.optInt("speed", 120);
             midiSongId = obj.optString("songID");
             hertz = obj.optInt("hertz", 440);
+            int startTime = obj.optInt("startTime", 0);
+            startTime = this.convertPlayMidPosFromTime(startTime);
             if (MidiPlayerUtils.getInstance().isPause()) {
-                MidiPlayerUtils.getInstance().resumePlay();
+                MidiPlayerUtils.getInstance().resumePlay(startTime);
                 loopHandler.sendEmptyMessage(1);
                 onSendMessage(message.toString());
             } else {
                 loopHandler.removeMessages(1);
-                MidiPlayerUtils.getInstance().playSound(
-                        (float) midiFileSpeed / (float) midiFileOriginalSpeed,
+                MidiPlayerUtils.getInstance().playSound(startTime,
+                      (float) midiFileSpeed / (float) midiFileOriginalSpeed,
                         hertz,
                         fp -> {
                             onSendMessage(message.toString());
@@ -1793,6 +1795,10 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
         }
     }
 
+    private int convertPlayMidPosFromTime(int time) {
+        return (int)((long)time * MidiPlayerUtils.getInstance().getTotalLength() / this.midiFileDuration);
+    }
+
     @Override
     public void cloudSuspend(JSONObject message) {
         try {

+ 4 - 10
student/src/main/java/com/cooleshow/student/widgets/helper/JsInterfaceAccomPanyUtils.java

@@ -20,6 +20,7 @@ import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.student.helper.EventHelper;
 import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.gyf.immersionbar.ImmersionBar;
 
 import org.json.JSONObject;
@@ -32,6 +33,7 @@ import org.json.JSONObject;
  * Author     : 刘瑞
  * Date       : 2018/11/12 15:23
  */
+@Deprecated
 public class JsInterfaceAccomPanyUtils extends Object {
     private static final String TAG = "JsInterfaceAccomPanyUtils";
 
@@ -142,16 +144,8 @@ public class JsInterfaceAccomPanyUtils extends Object {
                         c_orientation = content.optInt("c_orientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                     } catch (Exception e) {
                     }
-
-                    ARouter.getInstance().build(RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
-                            .withString("url", content.getString("url"))
-                            .withBoolean("isHideTitle", isHideTitle)
-                            .withBoolean("statusBarTextColor", statusBarTextColor)
-                            .withBoolean("isOpenLight", isOpenLight)
-                            .withInt("orientation", orientation)
-                            .withInt("c_orientation", c_orientation)
-                            .navigation();
-
+                    String url = content.optString("url");
+                    AccompanyHelper.getInstance().startAccompanyPageByToken(activity,url,orientation,c_orientation);
                 } else if ("startEvaluating".equals(api)) {
                     if (onListener != null) {
                         onListener.startEvaluating(jsonObject);

+ 3 - 8
student/src/main/java/com/cooleshow/student/widgets/helper/JsInterfaceUtils.java

@@ -25,6 +25,7 @@ import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.student.helper.EventHelper;
 import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.gyf.immersionbar.ImmersionBar;
 
 import org.json.JSONObject;
@@ -167,14 +168,8 @@ public class JsInterfaceUtils extends Object {
                         c_orientation = content.optInt("c_orientation",ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//当前页面的横竖屏,用于云教练页面页面关闭的时候判断
                     } catch (Exception e) {
                     }
-                    ARouter.getInstance().build(RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
-                            .withString(WEB_URL, content.getString("url"))
-                            .withBoolean("isHideTitle", isHideTitle)
-                            .withBoolean("statusBarTextColor", statusBarTextColor)
-                            .withBoolean("isOpenLight", isOpenLight)
-                            .withInt("orientation", orientation)
-                            .withInt("c_orientation", c_orientation)
-                            .navigation();
+                    String url = content.optString("url");
+                    AccompanyHelper.getInstance().startAccompanyPageByToken(activity,url,orientation,c_orientation);
 
                 }
 

+ 1 - 2
teacher/build.gradle

@@ -128,12 +128,11 @@ dependencies {
 //    implementation project(path: ':live_teaching')
     implementation project(path: ':metronome')
     implementation project(path: ':musictuner')
-    implementation project(path: ':ffmpegCmd')
     implementation project(path: ':chatModule')
     implementation project(path: ':tclive')
     implementation project(path: ':classRoom')
     implementation project(path: ':musicMerge')
-    implementation project(path: ':accompany')
+    implementation project(path: ':accompanySDK')
     implementation "com.alibaba:arouter-api:$rootProject.ext.android.arouter_api_version"
     kapt "com.alibaba:arouter-compiler:$rootProject.ext.android.arouter_api_version"
 

+ 7 - 0
teacher/src/main/java/com/cooleshow/teacher/App.java

@@ -17,6 +17,7 @@ import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.widgets.CustomRefreshHeader;
 import com.cooleshow.teacher.helper.InitHelper;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.liulishuo.filedownloader.FileDownloader;
 import com.liulishuo.filedownloader.connection.FileDownloadUrlConnection;
 import com.liulishuo.filedownloader.services.ForegroundServiceConfig;
@@ -86,8 +87,14 @@ public class App extends BaseApplication {
         initJiguang();
         initRong();
         initUmeng();
+        initAccompany();
     }
 
+    private void initAccompany() {
+        AccompanyHelper.getInstance().initAccompany(this);
+    }
+
+
     private void initJiguang(){
         JPushInterface.setDebugMode(true);
         JCollectionAuth.setAuth(this, UserHelper.isAgreePrivacy());

+ 13 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/MainActivity.java

@@ -42,6 +42,7 @@ import com.cooleshow.teacher.databinding.ActivityMainBinding;
 import com.cooleshow.teacher.presenter.main.MainPresenter;
 import com.cooleshow.usercenter.bean.TeacherUserInfo;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.tbruyelle.rxpermissions3.RxPermissions;
 import com.tencent.bugly.crashreport.CrashReport;
 
@@ -72,6 +73,7 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
     private static final int EXIT_APP_DELAY = 1000;
     private long lastTime = 0;
     private boolean isNeedSetPushId = true;
+    private boolean isNeedLoginAccompany = true;
     private String floatViewEventUrl = "";
 
     private IUnReadMessageObserver mUnReadMessageObserver = new IUnReadMessageObserver() {
@@ -397,12 +399,22 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
         }
     }
 
+    private void loginAccompany() {
+        if (isNeedLoginAccompany && UserHelper.isLogin()) {
+            isNeedLoginAccompany = false;
+            String userId = UserHelper.getUserId();
+            String userAccessToken = UserHelper.getUserToken();
+            AccompanyHelper.getInstance().loginAccompany(userId, userAccessToken);
+        }
+    }
+
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void loadEventBus(LoginStatusEvent event) {
         if (event != null && event.eventCode == LoginStatusConstants.LOGIN_OUT) {
             IMCenter.getInstance().logoutIM();
             JPushInterface.deleteAlias(getApplicationContext(), 1);
             isNeedSetPushId = true;
+            isNeedLoginAccompany = true;
             LogUtils.i("pq", "LoginStatusEvent:logout");
             finish();
         }
@@ -422,6 +434,7 @@ public class MainActivity extends BaseMVPActivity<ActivityMainBinding, MainPrese
         UserHelper.saveUserInfo(teacherUserInfo);
         connectIM();
         bindPushId();
+        loginAccompany();
 
         //save达人认证状态和开通直播状态
         UserHelper.saveTeacherCertificationStatus(teacherUserInfo.entryStatus);

+ 4 - 9
teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceAccomPanyUtils.java

@@ -19,6 +19,7 @@ import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.teacher.helper.EventHelper;
 import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.gyf.immersionbar.ImmersionBar;
 
 import org.json.JSONObject;
@@ -31,6 +32,7 @@ import org.json.JSONObject;
  * Author     : 刘瑞
  * Date       : 2018/11/12 15:23
  */
+@Deprecated
 public class JsInterfaceAccomPanyUtils extends Object {
     private static final String TAG = "JsInterfaceAccomPanyUtils";
 
@@ -138,15 +140,8 @@ public class JsInterfaceAccomPanyUtils extends Object {
                         c_orientation = content.optInt("c_orientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                     } catch (Exception e) {
                     }
-
-                    ARouter.getInstance().build(RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
-                            .withString("url", content.getString("url"))
-                            .withBoolean("isHideTitle", isHideTitle)
-                            .withBoolean("statusBarTextColor", statusBarTextColor)
-                            .withBoolean("isOpenLight", isOpenLight)
-                            .withInt("orientation", orientation)
-                            .withInt("c_orientation", c_orientation)
-                            .navigation();
+                    String url = content.optString("url");
+                    AccompanyHelper.getInstance().startAccompanyPageByToken(activity,url,orientation,c_orientation);
 
                 } else if ("startEvaluating".equals(api)) {
                     if (onListener != null) {

+ 6 - 7
teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceHelper.java

@@ -2,6 +2,7 @@ package com.cooleshow.teacher.widgets.helper;
 
 import android.app.Activity;
 import android.content.Intent;
+import android.content.pm.ActivityInfo;
 import android.text.TextUtils;
 import android.webkit.JavascriptInterface;
 
@@ -10,6 +11,7 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -117,20 +119,17 @@ public class JsInterfaceHelper extends Object {
                 boolean statusBarTextColor = false;
                 boolean isOpenLight = false;
                 int orientation = -1;
+                int c_orientation = -1;
                 try {
                     isHideTitle = content.getBoolean("isHideTitle");
                     statusBarTextColor = content.getBoolean("statusBarTextColor");
                     isOpenLight = content.getBoolean("isOpenLight");
                     orientation = content.getInt("orientation");
+                    c_orientation = content.optInt("c_orientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                 } catch (Exception e) {
                 }
-                ARouter.getInstance().build(RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
-                        .withString("url", content.getString("url"))
-                        .withBoolean("isHideTitle", isHideTitle)
-                        .withBoolean("statusBarTextColor", statusBarTextColor)
-                        .withBoolean("isOpenLight", isOpenLight)
-                        .withInt("orientation", orientation)
-                        .navigation();
+                String url = content.optString("url");
+                AccompanyHelper.getInstance().startAccompanyPageByToken(activity,url,orientation,c_orientation);
                 return;
             } catch (JSONException e) {
                 e.printStackTrace();

+ 3 - 8
teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceUtils.java

@@ -25,6 +25,7 @@ import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.teacher.helper.EventHelper;
 import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.accompanysdk.manager.AccompanyHelper;
 import com.gyf.immersionbar.ImmersionBar;
 
 import org.json.JSONObject;
@@ -180,14 +181,8 @@ public class JsInterfaceUtils extends Object {
                         c_orientation = content.optInt("c_orientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//当前页面的横竖屏,用于云教练页面页面关闭的时候判断
                     } catch (Exception e) {
                     }
-                    ARouter.getInstance().build(RouterPath.Accompany.ACTIVITY_ACCOMPANY_HTML)
-                            .withString(WEB_URL, content.getString("url"))
-                            .withBoolean("isHideTitle", isHideTitle)
-                            .withBoolean("statusBarTextColor", statusBarTextColor)
-                            .withBoolean("isOpenLight", isOpenLight)
-                            .withInt("orientation", orientation)
-                            .withInt("c_orientation", c_orientation)
-                            .navigation();
+                    String url = content.optString("url");
+                    AccompanyHelper.getInstance().startAccompanyPageByToken(activity,url,orientation,c_orientation);
                     return;
 
                 }

Some files were not shown because too many files changed in this diff