Browse Source

乐播投屏接入

czq 2 years ago
parent
commit
1d100118dc
100 changed files with 1109 additions and 449 deletions
  1. 1 0
      .idea/misc.xml
  2. 16 7
      app/build.gradle
  3. 6 1
      app/proguard-rules.pro
  4. 1 1
      app/src/androidTest/java/com/bestv/edu/ExampleInstrumentedTest.java
  5. 28 28
      app/src/main/AndroidManifest.xml
  6. 29 12
      app/src/main/java/com/bestv/edu/App.java
  7. 1 1
      app/src/main/java/com/bestv/edu/Data.java
  8. 1 1
      app/src/main/java/com/bestv/edu/DragGridView.java
  9. 1 1
      app/src/main/java/com/bestv/edu/MoreColorTypeAdapter.java
  10. 1 1
      app/src/main/java/com/bestv/edu/Utils.java
  11. 2 2
      app/src/main/java/com/bestv/edu/activity/ActivityViewActivity.kt
  12. 2 2
      app/src/main/java/com/bestv/edu/activity/AnimActivity.java
  13. 2 3
      app/src/main/java/com/bestv/edu/activity/CongratulationsActivity.kt
  14. 2 2
      app/src/main/java/com/bestv/edu/activity/CountDownActivity.kt
  15. 2 3
      app/src/main/java/com/bestv/edu/activity/DragSelectActivity.java
  16. 18 18
      app/src/main/java/com/bestv/edu/activity/EntyAnimActivity.java
  17. 3 3
      app/src/main/java/com/bestv/edu/activity/FirstFragment.java
  18. 215 0
      app/src/main/java/com/bestv/edu/activity/GSXYVideoPlayerActivity.java
  19. 4 4
      app/src/main/java/com/bestv/edu/activity/GuideActivity.java
  20. 2 2
      app/src/main/java/com/bestv/edu/activity/IJKPlayerActivity.java
  21. 6 6
      app/src/main/java/com/bestv/edu/activity/ListActivity.java
  22. 2 3
      app/src/main/java/com/bestv/edu/activity/LottieActivity.kt
  23. 3 3
      app/src/main/java/com/bestv/edu/activity/MainActivity.java
  24. 2 5
      app/src/main/java/com/bestv/edu/activity/ProgressDemoActivity.kt
  25. 2 3
      app/src/main/java/com/bestv/edu/activity/QuxianActivity.java
  26. 3 3
      app/src/main/java/com/bestv/edu/activity/SecondFragment.java
  27. 3 3
      app/src/main/java/com/bestv/edu/activity/SequentialDragActivity.java
  28. 2 2
      app/src/main/java/com/bestv/edu/activity/SongLyricActivity.kt
  29. 5 6
      app/src/main/java/com/bestv/edu/activity/SoundActivity.java
  30. 2 10
      app/src/main/java/com/bestv/edu/activity/StarsActivity.java
  31. 4 5
      app/src/main/java/com/bestv/edu/activity/Test2Activity.java
  32. 4 12
      app/src/main/java/com/bestv/edu/activity/TestActivity.java
  33. 2 2
      app/src/main/java/com/bestv/edu/activity/UMengLoginActivity.java
  34. 2 2
      app/src/main/java/com/bestv/edu/activity/WebActivity.java
  35. 2 3
      app/src/main/java/com/bestv/edu/anim/Anim.java
  36. 2 5
      app/src/main/java/com/bestv/edu/anim/AnimBaiYeChuang.java
  37. 2 3
      app/src/main/java/com/bestv/edu/anim/AnimCaChu.java
  38. 2 4
      app/src/main/java/com/bestv/edu/anim/AnimHeZhuang.java
  39. 2 5
      app/src/main/java/com/bestv/edu/anim/AnimJieTi.java
  40. 2 3
      app/src/main/java/com/bestv/edu/anim/AnimLingXing.java
  41. 2 4
      app/src/main/java/com/bestv/edu/anim/AnimLunZi.java
  42. 2 3
      app/src/main/java/com/bestv/edu/anim/AnimPiLie.java
  43. 2 4
      app/src/main/java/com/bestv/edu/anim/AnimQiPan.java
  44. 2 4
      app/src/main/java/com/bestv/edu/anim/AnimQieRu.java
  45. 2 3
      app/src/main/java/com/bestv/edu/anim/AnimShanXingZhanKai.java
  46. 2 3
      app/src/main/java/com/bestv/edu/anim/AnimShiZiXingKuoZhan.java
  47. 2 5
      app/src/main/java/com/bestv/edu/anim/AnimSuiJiXianTiao.java
  48. 2 4
      app/src/main/java/com/bestv/edu/anim/AnimXiangNeiRongJie.java
  49. 2 3
      app/src/main/java/com/bestv/edu/anim/AnimYuanXingKuoZhan.java
  50. 1 1
      app/src/main/java/com/bestv/edu/bean/ListBean.java
  51. 1 1
      app/src/main/java/com/bestv/edu/bean/World.java
  52. 224 0
      app/src/main/java/com/bestv/edu/dlan/CastManager.java
  53. 196 0
      app/src/main/java/com/bestv/edu/dlan/DLNAControlCenter.java
  54. 166 0
      app/src/main/java/com/bestv/edu/dlan/DeviceManager.java
  55. 1 1
      app/src/main/java/com/bestv/edu/dragview/DragView.java
  56. 1 3
      app/src/main/java/com/bestv/edu/dragview/DragViewUtil.java
  57. 2 2
      app/src/main/java/com/bestv/edu/dragview/MediaView.java
  58. 1 1
      app/src/main/java/com/bestv/edu/receiver/MyService.java
  59. 1 1
      app/src/main/java/com/bestv/edu/receiver/PushMessageReceiver.java
  60. 2 11
      app/src/main/java/com/bestv/edu/umeng/UmInitConfig.java
  61. 1 1
      app/src/main/java/com/bestv/edu/utils/BezierUtil.java
  62. 1 1
      app/src/main/java/com/bestv/edu/utils/FileUtil.java
  63. 1 5
      app/src/main/java/com/bestv/edu/utils/FocusUtils.java
  64. 1 3
      app/src/main/java/com/bestv/edu/utils/MediaRecorderDemo.java
  65. 1 1
      app/src/main/java/com/bestv/edu/utils/SoundPoolUtil.java
  66. 1 1
      app/src/main/java/com/bestv/edu/view/BezierView.java
  67. 1 2
      app/src/main/java/com/bestv/edu/view/Calculator.java
  68. 3 3
      app/src/main/java/com/bestv/edu/view/EnterAnimLayout.java
  69. 1 3
      app/src/main/java/com/bestv/edu/view/FireworkView.java
  70. 1 2
      app/src/main/java/com/bestv/edu/view/GuideImageView.java
  71. 1 2
      app/src/main/java/com/bestv/edu/view/MaskFilterView.java
  72. 1 3
      app/src/main/java/com/bestv/edu/view/MyGuideCaseQueue.java
  73. 2 5
      app/src/main/java/com/bestv/edu/view/MyGuideCaseView.java
  74. 1 3
      app/src/main/java/com/bestv/edu/view/MyLikeView.java
  75. 2 2
      app/src/main/java/com/bestv/edu/view/MyLinearLayout.java
  76. 1 1
      app/src/main/java/com/bestv/edu/view/MyView.java
  77. 2 2
      app/src/main/java/com/bestv/edu/view/QuadBezierView.java
  78. 1 1
      app/src/main/java/com/bestv/edu/view/SongLyricTextView.kt
  79. 1 1
      app/src/main/java/com/bestv/edu/view/Utils.kt
  80. 3 3
      app/src/main/java/com/bestv/edu/view/VideoPreviewPlay.java
  81. 5 5
      app/src/main/java/com/bestv/edu/view/circleprogress/CircleProgress.java
  82. 5 6
      app/src/main/java/com/bestv/edu/view/circleprogress/DialProgress.java
  83. 5 5
      app/src/main/java/com/bestv/edu/view/circleprogress/WaveProgress.java
  84. 1 1
      app/src/main/java/com/bestv/edu/view/circleprogress/utils/Constant.java
  85. 1 1
      app/src/main/java/com/bestv/edu/view/circleprogress/utils/MiscUtil.java
  86. 1 1
      app/src/main/java/com/bestv/edu/yzs/ConfigBean.java
  87. 2 2
      app/src/main/java/com/bestv/edu/yzs/YZSConfigActivity.java
  88. 2 2
      app/src/main/java/com/bestv/edu/yzs/YZSDemoActivity.java
  89. 0 98
      app/src/main/java/com/xunao/effectdemo/activity/GSXYVideoPlayerActivity.java
  90. 1 1
      app/src/main/res/layout/activity_congratulations.xml
  91. 1 1
      app/src/main/res/layout/activity_count_down.xml
  92. 32 32
      app/src/main/res/layout/activity_enty_anim.xml
  93. 7 1
      app/src/main/res/layout/activity_gsxy_video.xml
  94. 2 2
      app/src/main/res/layout/activity_list.xml
  95. 2 2
      app/src/main/res/layout/activity_progress.xml
  96. 1 1
      app/src/main/res/layout/activity_songe.xml
  97. 2 2
      app/src/main/res/layout/activity_test.xml
  98. 4 4
      app/src/main/res/layout/activity_test2.xml
  99. 2 2
      app/src/main/res/navigation/nav_graph.xml
  100. 1 1
      app/src/test/java/com/bestv/edu/ExampleUnitTest.java

+ 1 - 0
.idea/misc.xml

@@ -8,6 +8,7 @@
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_count_down.xml" value="0.25" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_drag_select.xml" value="0.12708333333333333" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_enty_anim.xml" value="0.11979166666666667" />
+        <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_gsxy_play.xml" value="0.152734375" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_gsxy_video.xml" value="0.1" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_ijkplay.xml" value="0.1390625" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_lottie.xml" value="0.1" />

+ 16 - 7
app/build.gradle

@@ -13,7 +13,7 @@ android {
     buildToolsVersion "30.0.3"
 
     defaultConfig {
-        applicationId "com.xunao.effectdemo"
+        applicationId "com.bestv.edu"
         minSdkVersion 21
         targetSdkVersion 30
         versionCode 1
@@ -49,15 +49,24 @@ android {
         }
 
         debug {
-            storeFile file("effect.jks")
-            storePassword "xunao123"
-            keyAlias "xuantu"
-            keyPassword "xunao123"
-            v1SigningEnabled true
-            v2SigningEnabled true
+//            storeFile file("effect.jks")
+//            storePassword "xunao123"
+//            keyAlias "xuantu"
+//            keyPassword "xunao123"
+            storeFile file("bestvedu.jks")
+            storePassword "bestv001!"
+            keyAlias "bestvedu"
+            keyPassword "bestv001!"
+//            v1SigningEnabled true
+//            v2SigningEnabled true
         }
     }
     buildTypes {
+        debug {
+            minifyEnabled false
+            signingConfig signingConfigs.debug
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
         release {
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

+ 6 - 1
app/proguard-rules.pro

@@ -18,4 +18,9 @@
 
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
+
+###Lebo
+-keep class com.hpplay.**{*;}
+-keep class com.hpplay.**$*{*;}
+-dontwarn com.hpplay.**

+ 1 - 1
app/src/androidTest/java/com/xunao/effectdemo/ExampleInstrumentedTest.java → app/src/androidTest/java/com/bestv/edu/ExampleInstrumentedTest.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo;
+package com.bestv.edu;
 
 import android.content.Context;
 

+ 28 - 28
app/src/main/AndroidManifest.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    package="com.xunao.effectdemo">
+    package="com.bestv.edu">
 
     <uses-sdk tools:overrideLibrary="com.qmuiteam.qmui" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@@ -33,7 +33,7 @@
 
 
     <application
-        android:name=".App"
+        android:name="com.bestv.edu.App"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
@@ -42,7 +42,7 @@
         android:usesCleartextTraffic="true"
         android:theme="@style/AppTheme">
 
-        <activity android:name=".activity.MainActivity">
+        <activity android:name="com.bestv.edu.activity.MainActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -54,35 +54,35 @@
             </intent-filter>
         </activity>
         <activity
-            android:name=".activity.GuideActivity"
+            android:name="com.bestv.edu.activity.GuideActivity"
             android:screenOrientation="landscape" />
-        <activity android:name=".activity.ListActivity" />
-        <activity android:name=".activity.AnimActivity" />
+        <activity android:name="com.bestv.edu.activity.ListActivity" />
+        <activity android:name="com.bestv.edu.activity.AnimActivity" />
         <activity
-            android:name=".activity.TestActivity"
+            android:name="com.bestv.edu.activity.TestActivity"
             android:screenOrientation="landscape" />
         <activity
-            android:name=".activity.Test2Activity"
+            android:name="com.bestv.edu.activity.Test2Activity"
             android:screenOrientation="landscape" />
-        <activity android:name=".activity.EntyAnimActivity" />
+        <activity android:name="com.bestv.edu.activity.EntyAnimActivity" />
         <activity
-            android:name=".activity.QuxianActivity"
+            android:name="com.bestv.edu.activity.QuxianActivity"
             android:screenOrientation="landscape" />
-        <activity android:name=".activity.ProgressDemoActivity" />
-        <activity android:name=".activity.ActivityViewActivity" />
+        <activity android:name="com.bestv.edu.activity.ProgressDemoActivity" />
+        <activity android:name="com.bestv.edu.activity.ActivityViewActivity" />
         <activity
-            android:name=".activity.DragSelectActivity"
+            android:name="com.bestv.edu.activity.DragSelectActivity"
             android:screenOrientation="landscape" />
         <activity
-            android:name=".activity.CountDownActivity"
+            android:name="com.bestv.edu.activity.CountDownActivity"
             android:screenOrientation="landscape" />
-        <activity android:name=".activity.LottieActivity"/>
-        <activity android:name=".activity.CongratulationsActivity"/>
-        <activity android:name=".activity.SoundActivity"/>
-        <activity android:name=".activity.StarsActivity"
+        <activity android:name="com.bestv.edu.activity.LottieActivity"/>
+        <activity android:name="com.bestv.edu.activity.CongratulationsActivity"/>
+        <activity android:name="com.bestv.edu.activity.SoundActivity"/>
+        <activity android:name="com.bestv.edu.activity.StarsActivity"
             android:screenOrientation="landscape"/>
 
-        <service android:name=".receiver.MyService"
+        <service android:name="com.bestv.edu.receiver.MyService"
             android:enabled="true"
             android:exported="false"
             android:process=":pushcore">
@@ -91,7 +91,7 @@
             </intent-filter>
         </service>
         <receiver
-            android:name=".receiver.PushMessageReceiver"
+            android:name="com.bestv.edu.receiver.PushMessageReceiver"
             android:enabled="true"
             android:exported="false">
             <intent-filter>
@@ -113,19 +113,19 @@
             </intent-filter>
         </provider>
 
-        <activity android:name=".activity.UMengLoginActivity"/>
+        <activity android:name="com.bestv.edu.activity.UMengLoginActivity"/>
         <activity
-            android:name=".activity.WebActivity"
+            android:name="com.bestv.edu.activity.WebActivity"
             android:screenOrientation="landscape" />
         <activity
-            android:name=".activity.SequentialDragActivity"
+            android:name="com.bestv.edu.activity.SequentialDragActivity"
             android:screenOrientation="landscape" />
-        <activity android:name=".yzs.YZSConfigActivity"/>
-        <activity android:name=".yzs.YZSDemoActivity"/>
-        <activity android:name=".activity.SongLyricActivity"/>
-        <activity android:name=".activity.IJKPlayerActivity"
+        <activity android:name="com.bestv.edu.yzs.YZSConfigActivity"/>
+        <activity android:name="com.bestv.edu.yzs.YZSDemoActivity"/>
+        <activity android:name="com.bestv.edu.activity.SongLyricActivity"/>
+        <activity android:name="com.bestv.edu.activity.IJKPlayerActivity"
             android:screenOrientation="landscape" />
-        <activity android:name=".activity.GSXYVideoPlayerActivity"
+        <activity android:name="com.bestv.edu.activity.GSXYVideoPlayerActivity"
             android:screenOrientation="landscape" />
     </application>
 

+ 29 - 12
app/src/main/java/com/xunao/effectdemo/App.java → app/src/main/java/com/bestv/edu/App.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo;
+package com.bestv.edu;
 
 import android.app.Application;
 import android.content.Context;
@@ -7,14 +7,20 @@ import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.util.Log;
 
+import com.bestv.edu.dlan.CastManager;
+import com.hpplay.sdk.source.api.IBindSdkListener;
+import com.hpplay.sdk.source.api.ILelinkPlayerListener;
 import com.hpplay.sdk.source.api.LelinkSourceSDK;
+import com.hpplay.sdk.source.browse.api.IAPI;
 import com.uc.crashsdk.export.CrashApi;
 import com.umeng.analytics.MobclickAgent;
 import com.umeng.commonsdk.UMConfigure;
-import com.xunao.effectdemo.umeng.UmInitConfig;
+import com.bestv.edu.umeng.UmInitConfig;
 
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Locale;
 
 import cn.jpush.android.api.JPushInterface;
@@ -29,28 +35,39 @@ import cn.jpush.android.api.JPushInterface;
 public class App extends Application {
 
 	public static App app;
-
+	private IBindSdkListener mBindSdkListener;
 	public static App getInstance() {
 		return app;
 	}
 	@Override
 	public void onCreate() {
 		super.onCreate();
-		initUmengSDK();
+//		initUmengSDK();
 		app = this;
-		JPushInterface.setDebugMode(true);
-		JPushInterface.init(this);
+//		JPushInterface.setDebugMode(true);
+//		JPushInterface.init(this);
 //		getSHA1Signature(this);
-
+		initLebo();
 	}
-
+	private final List<ILelinkPlayerListener> mListenerList = new ArrayList<>();
 	void initLebo(){
-//		LelinkSourceSDK.getInstance()
-//				//FIXME WARN: 这里替换为您申请的AppID & AppSecret,build.gradle替换为您的应用包名
-//				.setSdkInitInfo(this, getString(R.string.app_id), getString(R.string.app_secret))
-//				.easyPush(mBrowseContainer);
+
+		mBindSdkListener = new IBindSdkListener() {
+			@Override
+			public void onBindCallback(boolean success) {
+				Log.e("LeBo","初始化:"+success);
+				LelinkSourceSDK.getInstance().setPermissionMode( IAPI.PERMISSION_MODE_CLOUD_LICENSE, "123342");
+			}
+		};
+		LelinkSourceSDK.getInstance()
+				.setBindSdkListener(mBindSdkListener)
+				.setPlayListener(CastManager.getInstance().getLelinkPlayerListener())
+				.setSdkInitInfo(getApplicationContext(),"20268", "30ff4917114c5241eddbef00e5be7f6b")
+				.bindSdk();
 	}
 
+
+
 	/**
 	 * 初始化友盟SDK
 	 */

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/Data.java → app/src/main/java/com/bestv/edu/Data.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo;
+package com.bestv.edu;
 
 
 /**

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/DragGridView.java → app/src/main/java/com/bestv/edu/DragGridView.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo;
+package com.bestv.edu;
 
 import android.app.Activity;
 import android.content.Context;

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/MoreColorTypeAdapter.java → app/src/main/java/com/bestv/edu/MoreColorTypeAdapter.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo;
+package com.bestv.edu;
 
 import android.content.Context;
 import android.text.TextUtils;

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/Utils.java → app/src/main/java/com/bestv/edu/Utils.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo;
+package com.bestv.edu;
 /*
  * @创建者     Demon
  * @创建时间   2018/5/2 16:33

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/activity/ActivityViewActivity.kt → app/src/main/java/com/bestv/edu/activity/ActivityViewActivity.kt

@@ -1,10 +1,10 @@
-package com.xunao.effectdemo.activity
+package com.bestv.edu.activity
 
 import android.annotation.SuppressLint
 import android.app.Activity
 import android.os.Bundle
 import android.view.View
-import com.xunao.effectdemo.R
+import com.bestv.edu.R
 import kotlinx.android.synthetic.main.activity_view.*
 
 

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/activity/AnimActivity.java → app/src/main/java/com/bestv/edu/activity/AnimActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -21,7 +21,7 @@ import android.widget.ImageView;
 
 import androidx.annotation.Nullable;
 
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 import java.util.Random;
 

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/activity/CongratulationsActivity.kt → app/src/main/java/com/bestv/edu/activity/CongratulationsActivity.kt

@@ -1,10 +1,9 @@
-package com.xunao.effectdemo.activity
+package com.bestv.edu.activity
 
 import android.app.Activity
 import android.os.Bundle
-import com.xunao.effectdemo.R
+import com.bestv.edu.R
 import kotlinx.android.synthetic.main.activity_congratulations.*
-import kotlinx.android.synthetic.main.activity_lottie.*
 
 /**
  * author : 程中强

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/activity/CountDownActivity.kt → app/src/main/java/com/bestv/edu/activity/CountDownActivity.kt

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity
+package com.bestv.edu.activity
 
 import android.app.Activity
 import android.os.Build
@@ -7,7 +7,7 @@ import android.os.Handler
 import android.os.Message
 import androidx.annotation.RequiresApi
 import com.xuexiang.xui.widget.progress.HorizontalProgressView.LINEAR_INTERPOLATOR
-import com.xunao.effectdemo.R
+import com.bestv.edu.R
 import kotlinx.android.synthetic.main.activity_count_down.*
 
 /**

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/activity/DragSelectActivity.java → app/src/main/java/com/bestv/edu/activity/DragSelectActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.animation.Animator;
 import android.animation.TypeEvaluator;
@@ -16,14 +16,13 @@ import android.view.animation.DecelerateInterpolator;
 import android.view.animation.RotateAnimation;
 import android.view.animation.ScaleAnimation;
 import android.view.animation.TranslateAnimation;
-import android.widget.ImageView;
 import android.widget.SeekBar;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.xuexiang.xui.widget.imageview.RadiusImageView;
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 /**
  * author : 程中强

+ 18 - 18
app/src/main/java/com/xunao/effectdemo/activity/EntyAnimActivity.java → app/src/main/java/com/bestv/edu/activity/EntyAnimActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.app.Activity;
 import android.os.Bundle;
@@ -6,23 +6,23 @@ import android.os.Handler;
 import android.view.View;
 import android.widget.CheckBox;
 
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.anim.Anim;
-import com.xunao.effectdemo.anim.AnimBaiYeChuang;
-import com.xunao.effectdemo.anim.AnimCaChu;
-import com.xunao.effectdemo.anim.AnimHeZhuang;
-import com.xunao.effectdemo.anim.AnimJieTi;
-import com.xunao.effectdemo.anim.AnimLingXing;
-import com.xunao.effectdemo.anim.AnimLunZi;
-import com.xunao.effectdemo.anim.AnimPiLie;
-import com.xunao.effectdemo.anim.AnimQiPan;
-import com.xunao.effectdemo.anim.AnimQieRu;
-import com.xunao.effectdemo.anim.AnimShanXingZhanKai;
-import com.xunao.effectdemo.anim.AnimShiZiXingKuoZhan;
-import com.xunao.effectdemo.anim.AnimSuiJiXianTiao;
-import com.xunao.effectdemo.anim.AnimXiangNeiRongJie;
-import com.xunao.effectdemo.anim.AnimYuanXingKuoZhan;
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.R;
+import com.bestv.edu.anim.Anim;
+import com.bestv.edu.anim.AnimBaiYeChuang;
+import com.bestv.edu.anim.AnimCaChu;
+import com.bestv.edu.anim.AnimHeZhuang;
+import com.bestv.edu.anim.AnimJieTi;
+import com.bestv.edu.anim.AnimLingXing;
+import com.bestv.edu.anim.AnimLunZi;
+import com.bestv.edu.anim.AnimPiLie;
+import com.bestv.edu.anim.AnimQiPan;
+import com.bestv.edu.anim.AnimQieRu;
+import com.bestv.edu.anim.AnimShanXingZhanKai;
+import com.bestv.edu.anim.AnimShiZiXingKuoZhan;
+import com.bestv.edu.anim.AnimSuiJiXianTiao;
+import com.bestv.edu.anim.AnimXiangNeiRongJie;
+import com.bestv.edu.anim.AnimYuanXingKuoZhan;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * author : 程中强

+ 3 - 3
app/src/main/java/com/xunao/effectdemo/activity/FirstFragment.java → app/src/main/java/com/bestv/edu/activity/FirstFragment.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.os.Bundle;
 import android.view.LayoutInflater;
@@ -9,8 +9,8 @@ import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
 import androidx.navigation.fragment.NavHostFragment;
 
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.databinding.FragmentFirstBinding;
+import com.bestv.edu.R;
+import com.bestv.edu.databinding.FragmentFirstBinding;
 
 public class FirstFragment extends Fragment {
 

+ 215 - 0
app/src/main/java/com/bestv/edu/activity/GSXYVideoPlayerActivity.java

@@ -0,0 +1,215 @@
+package com.bestv.edu.activity;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+
+import androidx.annotation.Nullable;
+
+import com.hpplay.sdk.source.api.IBindSdkListener;
+import com.hpplay.sdk.source.api.LelinkSourceSDK;
+import com.hpplay.sdk.source.browse.api.IAPI;
+import com.hpplay.sdk.source.browse.api.IBrowseListener;
+import com.hpplay.sdk.source.browse.api.LelinkServiceInfo;
+import com.hpplay.sdk.source.easycast.IEasyCastListener;
+import com.hpplay.sdk.source.easycast.bean.EasyCastBean;
+import com.shuyu.gsyvideoplayer.GSYVideoManager;
+import com.shuyu.gsyvideoplayer.utils.OrientationUtils;
+import com.bestv.edu.R;
+import com.bestv.edu.view.VideoPreviewPlay;
+
+import java.util.List;
+
+/**
+ * author : 程中强
+ * e-mail : 740479946@qq.com
+ * date : 2022/9/1417:18
+ * desc :
+ * version: 1.0
+ */
+public class GSXYVideoPlayerActivity extends Activity {
+
+	VideoPreviewPlay videoPlayer;
+	private OrientationUtils orientationUtils;
+	private Button btn;
+	private boolean isFirst = false;
+	private ViewGroup mBrowseContainer;
+
+	private String url = "http://v3.cztv.com/cztv/vod/2018/06/28/7c45987529ea410dad7c088ba3b53dac/h264_1500k_mp4.mp4";
+	@Override
+	protected void onCreate(@Nullable Bundle savedInstanceState) {
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_gsxy_video);
+		init();
+		mBindSdkListener = new IBindSdkListener() {
+			@Override
+			public void onBindCallback(boolean success) {
+				Log.e("LeBo","初始化:"+success);
+			}
+		};
+
+//		LelinkSourceSDK.getInstance().setEasyCastListener(mCastListener);
+		LelinkSourceSDK.getInstance().setBrowseResultListener(browserListener);
+	}
+	private IBindSdkListener mBindSdkListener;
+	void initLebo(){
+
+		LelinkSourceSDK.getInstance().startBrowse();
+//		LelinkSourceSDK.getInstance()
+////				.setBindSdkListener(mBindSdkListener)
+//				//FIXME WARN: 这里替换为您申请的AppID & AppSecret,build.gradle替换为您的应用包名 com.bestv.edu  原com.xunao.effectdemo
+////				.setSdkInitInfo(this, "20268", "30ff4917114c5241eddbef00e5be7f6b")
+//				.easyPush(mBrowseContainer);
+
+	}
+	private IBrowseListener browserListener = new IBrowseListener() {
+
+		@Override
+		public void onBrowse(int resultCode, List<LelinkServiceInfo> list) {
+			Log.e("MyTag","搜索:"+resultCode+"   "+IBrowseListener.BROWSE_SUCCESS);
+		}
+	};
+	private IEasyCastListener mCastListener = new IEasyCastListener() {
+
+		/**
+		 * 如果没有触发此回调,则表示此次未搜索到设备或用户未投屏
+		 * @param lelinkServiceInfo
+		 * @return
+		 */
+		@Override
+		public EasyCastBean onCast(LelinkServiceInfo lelinkServiceInfo) {
+			EasyCastBean bean = new EasyCastBean();
+			bean.url = url; //实际需要投屏的url
+			return bean;
+		}
+
+		/**
+		 * 如果投屏失败,在搜索页面关闭的时候,会触发回调
+		 * @param lelinkServiceInfo
+		 * @param easyCastBean
+		 * @param what
+		 * @param extra
+		 */
+		@Override
+		public void onCastError(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean, int what, int extra) {
+		}
+
+		/**
+		 * 推送成功
+		 * @param lelinkServiceInfo
+		 * @param easyCastBean
+		 */
+		@Override
+		public void onCastLoading(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
+		}
+
+		/**
+		 * 暂停
+		 * @param lelinkServiceInfo
+		 * @param easyCastBean
+		 */
+		@Override
+		public void onCastPause(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
+		}
+
+		/**
+		 * 起播 或 收端暂停之后恢复播放
+		 * @param lelinkServiceInfo
+		 * @param easyCastBean
+		 */
+		@Override
+		public void onCastStart(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
+		}
+
+		@Override
+		public void onCastPositionUpdate(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean, long duration, long position) {
+		}
+
+		/**
+		 * 收端播放结束,如果需要实现下一集,可在之后的onCast回调中提供播放信息
+		 * @param lelinkServiceInfo
+		 * @param easyCastBean
+		 */
+		@Override
+		public void onCastCompletion(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
+		}
+
+		/**
+		 * 搜索退出播放,不同于 onCastCompletion,此时需要恢复APP视频播放
+		 * @param lelinkServiceInfo
+		 * @param easyCastBean
+		 */
+		@Override
+		public void onCastStop(LelinkServiceInfo lelinkServiceInfo, EasyCastBean easyCastBean) {
+		}
+
+		@Override
+		public void onDismiss() {
+		}
+	};
+
+	void init(){
+		videoPlayer = findViewById(R.id.video_play);
+		videoPlayer.setUp(url, true, "null");
+
+		mBrowseContainer = findViewById(R.id.mBrowseContainer);
+
+		//增加title
+		videoPlayer.getTitleTextView().setVisibility(View.GONE);
+		//设置返回键
+		videoPlayer.getBackButton().setOnClickListener(v->{
+			finish();
+		});
+		videoPlayer.getFullscreenButton().setVisibility(View.GONE);
+		orientationUtils = new OrientationUtils(this, videoPlayer);
+		videoPlayer.setIsFinish(isFirst);
+		videoPlayer.setIsTouchWiget(isFirst);
+		videoPlayer.setIsTouchWigetFull(isFirst);
+		videoPlayer.setIfCurrentIsFullscreen(false);
+//		videoPlayer.startPlayLogic();
+
+		btn = findViewById(R.id.btn_finish);
+		btn.setOnClickListener(v->{
+			videoPlayer.onVideoPause();
+//			isFirst = !isFirst;
+//			videoPlayer.setIsFinish(isFirst);
+			mBrowseContainer.setVisibility(View.VISIBLE);
+			initLebo();
+		});
+	}
+
+	@Override
+	protected void onResume() {
+		super.onResume();
+		videoPlayer.onVideoResume();
+	}
+
+	@Override
+	protected void onPause() {
+		super.onPause();
+		videoPlayer.onVideoPause();
+	}
+
+	@Override
+	protected void onDestroy() {
+		super.onDestroy();
+		GSYVideoManager.releaseAllVideos();
+		if (orientationUtils != null)
+			orientationUtils.releaseListener();
+	}
+
+//	@Override
+//	public void onBackPressed() {
+//		//先返回正常状态
+//		if (orientationUtils.getScreenType() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
+//			videoPlayer.getFullscreenButton().performClick();
+//			return;
+//		}
+//		//释放所有
+//		videoPlayer.setVideoAllCallBack(null);
+//		super.onBackPressed();
+//	}
+}

+ 4 - 4
app/src/main/java/com/xunao/effectdemo/activity/GuideActivity.java → app/src/main/java/com/bestv/edu/activity/GuideActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.app.Activity;
 import android.os.Build;
@@ -10,9 +10,9 @@ import android.widget.ImageView;
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
 
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.view.MyGuideCaseQueue;
-import com.xunao.effectdemo.view.MyGuideCaseView;
+import com.bestv.edu.R;
+import com.bestv.edu.view.MyGuideCaseQueue;
+import com.bestv.edu.view.MyGuideCaseView;
 
 
 /**

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/activity/IJKPlayerActivity.java → app/src/main/java/com/bestv/edu/activity/IJKPlayerActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.app.Activity;
 import android.net.Uri;
@@ -8,7 +8,7 @@ import android.view.SurfaceView;
 
 import androidx.annotation.Nullable;
 
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 import java.io.IOException;
 

+ 6 - 6
app/src/main/java/com/xunao/effectdemo/activity/ListActivity.java → app/src/main/java/com/bestv/edu/activity/ListActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.app.Activity;
 import android.os.Bundle;
@@ -8,11 +8,11 @@ import android.widget.Toast;
 
 import androidx.annotation.Nullable;
 
-import com.xunao.effectdemo.Data;
-import com.xunao.effectdemo.DragGridView;
-import com.xunao.effectdemo.MoreColorTypeAdapter;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.dragview.MediaView;
+import com.bestv.edu.Data;
+import com.bestv.edu.DragGridView;
+import com.bestv.edu.MoreColorTypeAdapter;
+import com.bestv.edu.R;
+import com.bestv.edu.dragview.MediaView;
 
 import java.util.ArrayList;
 import java.util.Collections;

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/activity/LottieActivity.kt → app/src/main/java/com/bestv/edu/activity/LottieActivity.kt

@@ -1,10 +1,9 @@
-package com.xunao.effectdemo.activity
+package com.bestv.edu.activity
 
 import android.app.Activity
 import android.os.Bundle
-import com.xunao.effectdemo.R
+import com.bestv.edu.R
 import kotlinx.android.synthetic.main.activity_lottie.*
-import kotlinx.android.synthetic.main.activity_lottie.view.*
 
 /**
  * author : 程中强

+ 3 - 3
app/src/main/java/com/xunao/effectdemo/activity/MainActivity.java → app/src/main/java/com/bestv/edu/activity/MainActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.app.Activity;
 import android.content.Intent;
@@ -8,8 +8,8 @@ import android.widget.Button;
 import androidx.annotation.Nullable;
 
 import com.umeng.analytics.MobclickAgent;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.yzs.YZSDemoActivity;
+import com.bestv.edu.R;
+import com.bestv.edu.yzs.YZSDemoActivity;
 
 import java.util.HashMap;
 import java.util.Map;

+ 2 - 5
app/src/main/java/com/xunao/effectdemo/activity/ProgressDemoActivity.kt → app/src/main/java/com/bestv/edu/activity/ProgressDemoActivity.kt

@@ -1,12 +1,9 @@
-package com.xunao.effectdemo.activity
+package com.bestv.edu.activity
 
 import android.app.Activity
 import android.os.Bundle
 import android.util.Log
-import android.widget.SeekBar
-import com.xuexiang.xui.widget.picker.XSeekBar
-import com.xuexiang.xui.widget.progress.HorizontalProgressView
-import com.xunao.effectdemo.R
+import com.bestv.edu.R
 import kotlinx.android.synthetic.main.activity_progress.*
 
 /**

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/activity/QuxianActivity.java → app/src/main/java/com/bestv/edu/activity/QuxianActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.animation.Animator;
 import android.animation.ValueAnimator;
@@ -14,12 +14,11 @@ import android.view.animation.LinearInterpolator;
 import android.view.animation.RotateAnimation;
 import android.view.animation.TranslateAnimation;
 import android.widget.Button;
-import android.widget.ImageView;
 import android.widget.RelativeLayout;
 
 import androidx.annotation.Nullable;
 
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 /**
  * author : 程中强

+ 3 - 3
app/src/main/java/com/xunao/effectdemo/activity/SecondFragment.java → app/src/main/java/com/bestv/edu/activity/SecondFragment.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.os.Bundle;
 import android.view.LayoutInflater;
@@ -9,8 +9,8 @@ import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
 import androidx.navigation.fragment.NavHostFragment;
 
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.databinding.FragmentSecondBinding;
+import com.bestv.edu.R;
+import com.bestv.edu.databinding.FragmentSecondBinding;
 
 
 public class SecondFragment extends Fragment {

+ 3 - 3
app/src/main/java/com/xunao/effectdemo/activity/SequentialDragActivity.java → app/src/main/java/com/bestv/edu/activity/SequentialDragActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.animation.TypeEvaluator;
 import android.animation.ValueAnimator;
@@ -16,8 +16,8 @@ import android.widget.RelativeLayout;
 
 import androidx.annotation.Nullable;
 
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.bean.ListBean;
+import com.bestv.edu.R;
+import com.bestv.edu.bean.ListBean;
 
 import java.util.ArrayList;
 import java.util.List;

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/activity/SongLyricActivity.kt → app/src/main/java/com/bestv/edu/activity/SongLyricActivity.kt

@@ -1,8 +1,8 @@
-package com.xunao.effectdemo.activity
+package com.bestv.edu.activity
 
 import android.os.Bundle
 import androidx.appcompat.app.AppCompatActivity
-import com.xunao.effectdemo.R
+import com.bestv.edu.R
 import kotlinx.android.synthetic.main.activity_songe.*
 import kotlin.math.min
 

+ 5 - 6
app/src/main/java/com/xunao/effectdemo/activity/SoundActivity.java → app/src/main/java/com/bestv/edu/activity/SoundActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 
 import android.animation.Animator;
@@ -9,7 +9,6 @@ import android.os.Handler;
 import android.os.Message;
 import android.util.Log;
 import android.view.MotionEvent;
-import android.view.View;
 import android.view.animation.Animation;
 import android.view.animation.ScaleAnimation;
 import android.widget.RelativeLayout;
@@ -20,10 +19,10 @@ import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieAnimationView;
 import com.xuexiang.xui.widget.imageview.RadiusImageView;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.bean.World;
-import com.xunao.effectdemo.utils.FileUtil;
-import com.xunao.effectdemo.utils.MediaRecorderDemo;
+import com.bestv.edu.R;
+import com.bestv.edu.bean.World;
+import com.bestv.edu.utils.FileUtil;
+import com.bestv.edu.utils.MediaRecorderDemo;
 
 import java.io.File;
 

+ 2 - 10
app/src/main/java/com/xunao/effectdemo/activity/StarsActivity.java → app/src/main/java/com/bestv/edu/activity/StarsActivity.java

@@ -1,11 +1,8 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.app.Activity;
 import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
 import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
 import android.view.animation.ScaleAnimation;
 import android.view.animation.TranslateAnimation;
 import android.widget.ImageView;
@@ -15,12 +12,7 @@ import android.widget.TextView;
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.LottieAnimationView;
-import com.umeng.analytics.MobclickAgent;
-import com.xunao.effectdemo.App;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.bean.World;
-
-import cn.jpush.android.api.JPushInterface;
+import com.bestv.edu.R;
 
 /**
  * author : 程中强

+ 4 - 5
app/src/main/java/com/xunao/effectdemo/activity/Test2Activity.java → app/src/main/java/com/bestv/edu/activity/Test2Activity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.animation.Animator;
 import android.animation.Keyframe;
@@ -9,7 +9,6 @@ import android.animation.ValueAnimator;
 import android.app.Activity;
 
 
-import android.content.ClipData;
 import android.graphics.PointF;
 import android.os.Bundle;
 import android.os.Handler;
@@ -30,9 +29,9 @@ import android.widget.RelativeLayout;
 
 import androidx.annotation.NonNull;
 
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.bean.ListBean;
-import com.xunao.effectdemo.dragview.DragViewUtil;
+import com.bestv.edu.R;
+import com.bestv.edu.bean.ListBean;
+import com.bestv.edu.dragview.DragViewUtil;
 
 import java.util.ArrayList;
 import java.util.List;

+ 4 - 12
app/src/main/java/com/xunao/effectdemo/activity/TestActivity.java → app/src/main/java/com/bestv/edu/activity/TestActivity.java

@@ -1,19 +1,14 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.animation.Animator;
 import android.animation.TypeEvaluator;
 import android.animation.ValueAnimator;
 import android.app.Activity;
-import android.content.ClipData;
-import android.content.Intent;
 import android.graphics.PointF;
 import android.os.Handler;
 import android.os.Message;
-import android.os.SystemClock;
 import android.os.Bundle;
 import android.util.Log;
-import android.view.DragEvent;
-import android.view.HapticFeedbackConstants;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
@@ -21,17 +16,14 @@ import android.view.animation.Animation;
 import android.view.animation.DecelerateInterpolator;
 import android.view.animation.TranslateAnimation;
 import android.widget.Button;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 
 import androidx.annotation.NonNull;
 
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.bean.ListBean;
-import com.xunao.effectdemo.dragview.DragViewUtil;
-import com.xunao.effectdemo.view.MaskFilterView;
+import com.bestv.edu.R;
+import com.bestv.edu.bean.ListBean;
+import com.bestv.edu.view.MaskFilterView;
 
 import java.util.ArrayList;
 import java.util.List;

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/activity/UMengLoginActivity.java → app/src/main/java/com/bestv/edu/activity/UMengLoginActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.app.Activity;
 import android.os.Bundle;
@@ -10,7 +10,7 @@ import androidx.annotation.Nullable;
 import com.example.library.LikeView;
 import com.umeng.umverify.UMVerifyHelper;
 import com.umeng.umverify.listener.UMTokenResultListener;
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 /**
  * author : 程中强

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/activity/WebActivity.java → app/src/main/java/com/bestv/edu/activity/WebActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.activity;
+package com.bestv.edu.activity;
 
 import android.app.Activity;
 import android.content.Intent;
@@ -10,7 +10,7 @@ import android.webkit.WebViewClient;
 
 import androidx.annotation.Nullable;
 
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 /**
  * author : 程中强

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/anim/Anim.java → app/src/main/java/com/bestv/edu/anim/Anim.java

@@ -1,9 +1,8 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 
 /**

+ 2 - 5
app/src/main/java/com/xunao/effectdemo/anim/AnimBaiYeChuang.java → app/src/main/java/com/bestv/edu/anim/AnimBaiYeChuang.java

@@ -1,12 +1,9 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Path;
-import android.graphics.Region;
-import android.util.Log;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/anim/AnimCaChu.java → app/src/main/java/com/bestv/edu/anim/AnimCaChu.java

@@ -1,9 +1,8 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 
 /**

+ 2 - 4
app/src/main/java/com/xunao/effectdemo/anim/AnimHeZhuang.java → app/src/main/java/com/bestv/edu/anim/AnimHeZhuang.java

@@ -1,11 +1,9 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Region;
-import android.util.Log;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 5
app/src/main/java/com/xunao/effectdemo/anim/AnimJieTi.java → app/src/main/java/com/bestv/edu/anim/AnimJieTi.java

@@ -1,12 +1,9 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Path;
-import android.graphics.Region;
-import android.util.Log;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/anim/AnimLingXing.java → app/src/main/java/com/bestv/edu/anim/AnimLingXing.java

@@ -1,11 +1,10 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Path;
 import android.graphics.Region;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 4
app/src/main/java/com/xunao/effectdemo/anim/AnimLunZi.java → app/src/main/java/com/bestv/edu/anim/AnimLunZi.java

@@ -1,12 +1,10 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Path;
 import android.graphics.RectF;
-import android.graphics.Region;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/anim/AnimPiLie.java → app/src/main/java/com/bestv/edu/anim/AnimPiLie.java

@@ -1,10 +1,9 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Region;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 4
app/src/main/java/com/xunao/effectdemo/anim/AnimQiPan.java → app/src/main/java/com/bestv/edu/anim/AnimQiPan.java

@@ -1,11 +1,9 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Path;
-import android.graphics.Region;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 4
app/src/main/java/com/xunao/effectdemo/anim/AnimQieRu.java → app/src/main/java/com/bestv/edu/anim/AnimQieRu.java

@@ -1,10 +1,8 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
-import android.graphics.Region;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/anim/AnimShanXingZhanKai.java → app/src/main/java/com/bestv/edu/anim/AnimShanXingZhanKai.java

@@ -1,11 +1,10 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Path;
 import android.graphics.RectF;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/anim/AnimShiZiXingKuoZhan.java → app/src/main/java/com/bestv/edu/anim/AnimShiZiXingKuoZhan.java

@@ -1,10 +1,9 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Region;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 2 - 5
app/src/main/java/com/xunao/effectdemo/anim/AnimSuiJiXianTiao.java → app/src/main/java/com/bestv/edu/anim/AnimSuiJiXianTiao.java

@@ -1,12 +1,9 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Path;
-import android.graphics.Region;
-import android.util.Log;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 import java.util.Random;
 

+ 2 - 4
app/src/main/java/com/xunao/effectdemo/anim/AnimXiangNeiRongJie.java → app/src/main/java/com/bestv/edu/anim/AnimXiangNeiRongJie.java

@@ -1,11 +1,9 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Path;
-import android.graphics.Region;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 import java.util.Random;
 

+ 2 - 3
app/src/main/java/com/xunao/effectdemo/anim/AnimYuanXingKuoZhan.java → app/src/main/java/com/bestv/edu/anim/AnimYuanXingKuoZhan.java

@@ -1,12 +1,11 @@
-package com.xunao.effectdemo.anim;
+package com.bestv.edu.anim;
 
 import android.graphics.Canvas;
 import android.graphics.Path;
 import android.graphics.RectF;
 import android.graphics.Region;
-import android.view.View;
 
-import com.xunao.effectdemo.view.EnterAnimLayout;
+import com.bestv.edu.view.EnterAnimLayout;
 
 /**
  * Created by wpm on 2017/3/30.

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/bean/ListBean.java → app/src/main/java/com/bestv/edu/bean/ListBean.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.bean;
+package com.bestv.edu.bean;
 
 import android.widget.LinearLayout;
 

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/bean/World.java → app/src/main/java/com/bestv/edu/bean/World.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.bean;
+package com.bestv.edu.bean;
 
 
 

+ 224 - 0
app/src/main/java/com/bestv/edu/dlan/CastManager.java

@@ -0,0 +1,224 @@
+package com.bestv.edu.dlan;
+
+import android.util.Log;
+
+import com.hpplay.sdk.source.api.ILelinkPlayerListener;
+import com.hpplay.sdk.source.api.INewPlayerListener;
+import com.hpplay.sdk.source.bean.CastBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 推送
+ */
+public class CastManager {
+    private final static String TAG = "DemoCastManager";
+    private static CastManager sInstance = null;
+    private final List<ILelinkPlayerListener> mListenerList = new ArrayList<>();
+    private final List<INewPlayerListener> mListenerList2 = new ArrayList<>();
+    private final ILelinkPlayerListener mLelinkPlayerListener = new ILelinkPlayerListener() {
+
+        @Override
+        public void onLoading() {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onLoading();
+            }
+        }
+
+        @Override
+        public void onStart() {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onStart();
+            }
+        }
+
+        @Override
+        public void onPause() {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onPause();
+            }
+        }
+
+        @Override
+        public void onCompletion() {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onCompletion();
+            }
+        }
+
+        @Override
+        public void onStop() {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onStop();
+            }
+        }
+
+        @Override
+        public void onSeekComplete(int i) {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onSeekComplete(i);
+            }
+        }
+
+        @Override
+        public void onInfo(final int what, final int extra) {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onInfo(what, extra);
+            }
+        }
+
+        @Override
+        public void onInfo(int what, final String data) {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onInfo(what, data);
+            }
+        }
+
+        @Override
+        public void onError(int what, int extra) {
+            Log.i(TAG, "onError what:" + what + " extra:" + extra);
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onError(what, extra);
+            }
+        }
+
+        @Override
+        public void onVolumeChanged(float v) {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onVolumeChanged(v);
+            }
+        }
+
+        @Override
+        public void onPositionUpdate(long duration, long position) {
+            for (ILelinkPlayerListener listener : mListenerList) {
+                listener.onPositionUpdate(duration, position);
+            }
+        }
+    };
+
+    public synchronized static CastManager getInstance() {
+        synchronized (CastManager.class) {
+            if (sInstance == null) {
+                sInstance = new CastManager();
+            }
+        }
+        return sInstance;
+    }
+
+    private CastManager() {
+
+    }
+
+    public ILelinkPlayerListener getLelinkPlayerListener() {
+        return mLelinkPlayerListener;
+    }
+
+    public void addPlayerListener(ILelinkPlayerListener listener) {
+        if (mListenerList.size()>0){
+            mListenerList.clear();
+        }
+        mListenerList.add(listener);
+    }
+
+    public void removeListener(ILelinkPlayerListener listener) {
+        if (listener != null){
+            mListenerList.remove(listener);
+        }
+
+    }
+
+    private final INewPlayerListener mPlayerListener = new INewPlayerListener() {
+
+        @Override
+        public void onLoading(CastBean bean) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onLoading(bean);
+            }
+        }
+
+        @Override
+        public void onStart(CastBean bean) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onStart(bean);
+            }
+        }
+
+        @Override
+        public void onPause(CastBean bean) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onPause(bean);
+            }
+        }
+
+        @Override
+        public void onCompletion(CastBean bean, int type) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onCompletion(bean, type);
+            }
+        }
+
+        @Override
+        public void onStop(CastBean bean) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onStop(bean);
+            }
+        }
+
+        @Override
+        public void onSeekComplete(CastBean bean, int position) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onSeekComplete(bean, position);
+            }
+        }
+
+        @Override
+        public void onInfo(CastBean bean, final int what, final int extra) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onInfo(bean, what, extra);
+            }
+        }
+
+        @Override
+        public void onInfo(CastBean bean, int what, final String data) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onInfo(bean, what, data);
+            }
+        }
+
+        @Override
+        public void onError(CastBean bean, int what, int extra) {
+//            Logger.i(TAG, "onError what:" + what + " extra:" + extra);
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onError(bean, what, extra);
+            }
+        }
+
+        @Override
+        public void onVolumeChanged(CastBean bean, float percent) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onVolumeChanged(bean, percent);
+            }
+        }
+
+        @Override
+        public void onPositionUpdate(CastBean bean, long duration, long position) {
+            for (INewPlayerListener listener : mListenerList2) {
+                listener.onPositionUpdate(bean, duration, position);
+            }
+        }
+    };
+    public INewPlayerListener getPlayerListener() {
+        return mPlayerListener;
+    }
+
+    public void addPlayerListener(INewPlayerListener listener) {
+        mListenerList2.add(listener);
+    }
+
+    public void removeListener(INewPlayerListener listener) {
+        mListenerList2.remove(listener);
+    }
+
+}

+ 196 - 0
app/src/main/java/com/bestv/edu/dlan/DLNAControlCenter.java

@@ -0,0 +1,196 @@
+package com.bestv.edu.dlan;
+
+import android.os.Handler;
+import android.text.TextUtils;
+
+import com.bestv.edu.App;
+import com.hpplay.sdk.source.api.LelinkPlayerInfo;
+import com.hpplay.sdk.source.api.LelinkSourceSDK;
+import com.hpplay.sdk.source.bean.BrowserConfigBean;
+import com.hpplay.sdk.source.bean.MediaAssetBean;
+import com.hpplay.sdk.source.browse.api.LelinkServiceInfo;
+
+import java.util.HashMap;
+import java.util.concurrent.ExecutorService;
+
+/**
+ * author : 程中强
+ * e-mail : 740479946@qq.com
+ * date : 2022/9/1916:56
+ * desc :
+ * version: 1.0
+ */
+public class DLNAControlCenter {
+
+	private volatile static DLNAControlCenter dlnaCenter;
+	private ExecutorService executorService;
+	private long startMiracastTime;
+	private Handler handler;
+	private boolean isDlnaMode = false;
+	//dlna投屏相关
+	private final static int PUSH_SEEK = 3; // 投屏seek
+	private final static int PUSH_STATE_LISTENING = 4;//投屏状态监听
+	private final static int PUSH_STATE_BACK = 5;//投屏状态返回
+	private final static int PUSH_PLAY = 6; // 投屏开始
+
+	public static DLNAControlCenter getInstance() {
+		if (null == dlnaCenter) {
+			synchronized (DLNAControlCenter.class) {
+				if (dlnaCenter == null) {
+					dlnaCenter = new DLNAControlCenter();
+				}
+			}
+		}
+		return dlnaCenter;
+	}
+
+
+	private DLNAControlCenter() {
+//        executorService = Executors.newCachedThreadPool();
+		DeviceManager connectManager = DeviceManager.getInstance();
+		//sdk初始化
+		LelinkSourceSDK.getInstance()
+				.setBindSdkListener(connectManager.getBindListener())
+				.setBrowseResultListener(connectManager.getBrowseListener())
+				.setConnectListener(connectManager.getConnectListener())
+//				.setPlayListener(CastManager.getInstance().getLelinkPlayerListener())
+				//FIXME WARN: 这里替换为您申请的AppID & AppSecret,build.gradle替换为您的应用包名
+//                .setSdkInitInfo(AppVarManager.getInstance().getBaseContext(), "17894", "69ce8955094258d339c1b6eadef2ec09")
+				.setSdkInitInfo(App.getInstance(), "20268", "30ff4917114c5241eddbef00e5be7f6b")
+				.bindSdk();
+	}
+
+	public synchronized void startLelinkSearch() {
+		try {
+			BrowserConfigBean configBean = new BrowserConfigBean();
+			configBean.useLelink = true;
+			configBean.useDlna = true;
+			configBean.useBLE = true;
+			configBean.useSonic = true;
+			LelinkSourceSDK.getInstance().startBrowse(configBean);
+		} catch (Throwable throwable) {
+			throwable.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * dlna播放
+	 *
+	 * @param device
+	 * @param castUrl
+	 */
+	public synchronized void dlnaPlay(LelinkServiceInfo device, String castUrl, String titleName, double duration) {
+		if (device == null || TextUtils.isEmpty(castUrl)) {
+			return;
+		}
+		try {
+			LelinkSourceSDK.getInstance().stopPlay();
+			startMiracastTime = System.currentTimeMillis();
+			LelinkPlayerInfo lelinkPlayerInfo = new LelinkPlayerInfo();
+			lelinkPlayerInfo.setUrl(castUrl);
+			lelinkPlayerInfo.setType(LelinkSourceSDK.MEDIA_TYPE_VIDEO);
+			MediaAssetBean mediaAssetBean = new MediaAssetBean();
+			mediaAssetBean.setName(titleName);
+			// 非必要参数,部分dlna不返回视频总长度,实现下一集时若需要兼容这种dlna接收端,需设置媒资总长度,单位秒
+			mediaAssetBean.setDuration((long) duration);
+			lelinkPlayerInfo.setMediaAsset(mediaAssetBean);
+			lelinkPlayerInfo.setLelinkServiceInfo(device);
+			LelinkSourceSDK.getInstance().startPlayMedia(lelinkPlayerInfo);
+		} catch (Throwable throwable) {
+			throwable.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * 投屏跳转相应位置
+	 *
+	 * @param device
+	 */
+	public synchronized void dlnaSeekToPlayPosition(LelinkServiceInfo device, int progress) {
+		try {
+			LelinkSourceSDK.getInstance().seekTo(progress);
+		} catch (Throwable throwable) {
+			throwable.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * dlna暂停
+	 *
+	 * @param curTPDevice
+	 */
+	public synchronized void dlnaPause(LelinkServiceInfo curTPDevice) {
+		if (curTPDevice == null) return;
+		try {
+			LelinkSourceSDK.getInstance().pause();
+		} catch (Throwable throwable) {
+			throwable.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * dlna开始
+	 */
+	public synchronized void dlnaResume() {
+		try {
+			LelinkSourceSDK.getInstance().resume();
+		} catch (Throwable throwable) {
+			throwable.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * dlna投屏停止
+	 *
+	 * @param curTPDevice
+	 */
+	public synchronized void dlnaStop(LelinkServiceInfo curTPDevice, String titleId) {
+		try {
+
+			LelinkSourceSDK.getInstance().stopPlay();
+		} catch (Throwable throwable) {
+			throwable.printStackTrace();
+		}
+
+//        dlnaCenter = null;
+	}
+
+	/**
+	 * dlna设置音量
+	 */
+	public synchronized void dlnaVolume(boolean isAddVolume) {
+		try {
+			if (isAddVolume) {
+				LelinkSourceSDK.getInstance().addVolume();
+			} else {
+				LelinkSourceSDK.getInstance().subVolume();
+			}
+		} catch (Throwable throwable) {
+			throwable.printStackTrace();
+		}
+	}
+
+	/**
+	 * dlan上一次暂停位置上播放
+	 *
+	 * @param curTPDevice
+	 */
+	public synchronized void dlnaGoonPlayPosition(LelinkServiceInfo curTPDevice, int progress) {
+		if (curTPDevice == null) return;
+		try {
+			LelinkSourceSDK.getInstance().seekTo(progress);
+		} catch (Throwable throwable) {
+			throwable.printStackTrace();
+		}
+
+
+	}
+
+
+
+}

+ 166 - 0
app/src/main/java/com/bestv/edu/dlan/DeviceManager.java

@@ -0,0 +1,166 @@
+package com.bestv.edu.dlan;
+
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.hpplay.sdk.source.api.IBindSdkListener;
+import com.hpplay.sdk.source.api.IConnectListener;
+import com.hpplay.sdk.source.api.IRelevantInfoListener;
+import com.hpplay.sdk.source.api.LelinkSourceSDK;
+import com.hpplay.sdk.source.browse.api.IBrowseListener;
+import com.hpplay.sdk.source.browse.api.LelinkServiceInfo;
+
+import java.util.List;
+
+/**
+ * 连接
+ */
+public class DeviceManager {
+    private final static String TAG = "DemoDeviceManager";
+
+    private static DeviceManager sInstance = null;
+    private LelinkServiceInfo mSelectInfo;
+//    private IUIUpdateListener mUIListener;
+
+    private IBindSdkListener mBindSdkListener = new IBindSdkListener() {
+        @Override
+        public void onBindCallback(boolean success) {
+            Log.i(TAG, "onBindCallback " + success);
+            setPassThroughListener();
+            if (success) {
+//                mUIListener.onBindSuccess();
+            }
+        }
+    };
+
+    private IBrowseListener mBrowseListener = new IBrowseListener() {
+
+        @Override
+        public void onBrowse(int i, List<LelinkServiceInfo> list) {
+            if (i == IBrowseListener.BROWSE_ERROR_AUTH) {
+                Log.e(TAG, "授权失败");
+                return;
+            }
+            if (i == IBrowseListener.BROWSE_STOP) {
+                Log.i(TAG, "搜索停止");
+            } else if (i == IBrowseListener.BROWSE_TIMEOUT) {
+                Log.i(TAG, "搜索超时");
+            }
+//            if (mUIListener != null) {
+//                mUIListener.onUpdateDevices(list);
+//            }
+        }
+    };
+
+    private IConnectListener mConnectListener = new IConnectListener() {
+        @Override
+        public void onConnect(LelinkServiceInfo lelinkServiceInfo, int protocol) {
+            Log.i(TAG, "onConnect:" + lelinkServiceInfo.getName());
+            String type = protocol == IConnectListener.TYPE_LELINK ? "Lelink"
+                    : protocol == IConnectListener.TYPE_DLNA ? "DLNA"
+                    : protocol == IConnectListener.TYPE_IM ? "IM" : ("协议:" + protocol);
+            setSelectInfo(lelinkServiceInfo);
+//            if (mUIListener != null) {
+//                mUIListener.onConnect(lelinkServiceInfo);
+//            }
+        }
+
+        @Override
+        public void onDisconnect(LelinkServiceInfo lelinkServiceInfo, int what, int extra) {
+            if (lelinkServiceInfo == null) {
+                return;
+            }
+            Log.i(TAG, "onDisconnect:" + lelinkServiceInfo.getName() + " disConnectType:" + what + " extra:" + extra);
+            String text = null;
+            if (what == IConnectListener.WHAT_HARASS_WAITING) {// 防骚扰,等待用户确认
+                // 乐播投屏防骚扰等待消息,请开发者务必处理该消息
+                text = lelinkServiceInfo.getName() + "等待用户确认";
+            } else if (what == IConnectListener.WHAT_DISCONNECT) {
+                switch (extra) {
+                    case IConnectListener.EXTRA_HARASS_REJECT:// 防骚扰,用户拒绝投屏
+                        text = lelinkServiceInfo.getName() + "连接被拒绝";
+                        break;
+                    case IConnectListener.EXTRA_HARASS_TIMEOUT:// 防骚扰,用户响应超时
+                        text = lelinkServiceInfo.getName() + "防骚扰响应超时";
+                        break;
+                    case IConnectListener.EXTRA_HARASS_BLACKLIST:// 防骚扰,该用户被加入黑名单
+                        text = lelinkServiceInfo.getName() + "已被加入投屏黑名单";
+                        break;
+                    case IConnectListener.EXTRA_CONNECT_DEVICE_OFFLINE:
+                        text = lelinkServiceInfo.getName() + "不在线";
+                        break;
+                    default:
+                        text = lelinkServiceInfo.getName() + "连接断开";
+                        break;
+                }
+            } else if (what == IConnectListener.WHAT_CONNECT_FAILED) {
+                switch (extra) {
+                    case IConnectListener.EXTRA_CONNECT_DEVICE_OFFLINE:
+                        text = lelinkServiceInfo.getName() + "不在线";
+                        break;
+                    default:
+                        text = lelinkServiceInfo.getName() + "连接失败";
+                        break;
+                }
+            }
+            if (TextUtils.isEmpty(text)) {
+                text = "onDisconnect " + what + "/" + extra;
+            }
+        }
+    };
+
+    public static synchronized DeviceManager getInstance() {
+        synchronized (DeviceManager.class) {
+            if (sInstance == null) {
+                sInstance = new DeviceManager();
+            }
+        }
+        return sInstance;
+    }
+
+    private DeviceManager() {
+
+    }
+
+    public void setSelectInfo(LelinkServiceInfo serviceInfo) {
+        mSelectInfo = serviceInfo;
+    }
+
+//    public void setUIListener(IUIUpdateListener listener) {
+//        mUIListener = listener;
+//    }
+
+    public LelinkServiceInfo getSelectInfo() {
+        return mSelectInfo;
+    }
+
+    public IBindSdkListener getBindListener() {
+        return mBindSdkListener;
+    }
+
+    public IBrowseListener getBrowseListener() {
+        return mBrowseListener;
+    }
+
+    public IConnectListener getConnectListener() {
+        return mConnectListener;
+    }
+
+    /**
+     * 设置透传监听
+     */
+    private void setPassThroughListener() {
+        LelinkSourceSDK.getInstance().setPassThroughListener(new IRelevantInfoListener() {
+            @Override
+            public void onSendRelevantInfoResult(int option, String result) {
+
+            }
+
+            @Override
+            public void onReverseInfoResult(int option, final String result) {
+                Log.i(TAG, "onReverseInfoResult option = " + option + ", result = " + result);
+            }
+        });
+    }
+
+}

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/dragview/DragView.java → app/src/main/java/com/bestv/edu/dragview/DragView.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.dragview;
+package com.bestv.edu.dragview;
 
 import android.content.Context;
 import android.os.Build;

+ 1 - 3
app/src/main/java/com/xunao/effectdemo/dragview/DragViewUtil.java → app/src/main/java/com/bestv/edu/dragview/DragViewUtil.java

@@ -1,11 +1,9 @@
-package com.xunao.effectdemo.dragview;
+package com.bestv.edu.dragview;
 
-import android.content.ClipData;
 import android.util.Log;
 import android.view.DragEvent;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewGroup;
 
 /**
  * author : 程中强

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/dragview/MediaView.java → app/src/main/java/com/bestv/edu/dragview/MediaView.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.dragview;
+package com.bestv.edu.dragview;
 
 import android.content.Context;
 import android.graphics.Bitmap;
@@ -14,7 +14,7 @@ import android.view.View;
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
 
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 /**
  * author : 程中强

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/receiver/MyService.java → app/src/main/java/com/bestv/edu/receiver/MyService.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.receiver;
+package com.bestv.edu.receiver;
 
 import cn.jpush.android.service.JCommonService;
 

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/receiver/PushMessageReceiver.java → app/src/main/java/com/bestv/edu/receiver/PushMessageReceiver.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.receiver;
+package com.bestv.edu.receiver;
 
 import android.content.Context;
 import android.content.Intent;

+ 2 - 11
app/src/main/java/com/xunao/effectdemo/umeng/UmInitConfig.java → app/src/main/java/com/bestv/edu/umeng/UmInitConfig.java

@@ -1,20 +1,11 @@
-package com.xunao.effectdemo.umeng;
+package com.bestv.edu.umeng;
 
-import android.app.Notification;
-import android.app.NotificationChannel;
 import android.content.Context;
-import android.content.Intent;
-import android.os.Build;
 import android.os.Handler;
-import android.util.Log;
-import android.widget.RemoteViews;
-import android.widget.Toast;
 
 import com.umeng.analytics.MobclickAgent;
 import com.umeng.commonsdk.UMConfigure;
-import com.xunao.effectdemo.App;
-
-import static android.os.Looper.getMainLooper;
+import com.bestv.edu.App;
 
 
 public class UmInitConfig {

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/utils/BezierUtil.java → app/src/main/java/com/bestv/edu/utils/BezierUtil.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.utils;
+package com.bestv.edu.utils;
 
 import android.graphics.PointF;
 

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/utils/FileUtil.java → app/src/main/java/com/bestv/edu/utils/FileUtil.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.utils;
+package com.bestv.edu.utils;
 
 import android.os.Environment;
 

+ 1 - 5
app/src/main/java/com/xunao/effectdemo/utils/FocusUtils.java → app/src/main/java/com/bestv/edu/utils/FocusUtils.java

@@ -1,14 +1,10 @@
-package com.xunao.effectdemo.utils;
+package com.bestv.edu.utils;
 
-import android.animation.Animator;
 import android.animation.AnimatorSet;
 import android.animation.ValueAnimator;
 import android.util.Log;
 import android.view.View;
-import android.view.ViewAnimationUtils;
-import android.view.ViewGroup;
 import android.view.ViewParent;
-import android.widget.ViewAnimator;
 
 /**
  * author : 程中强

+ 1 - 3
app/src/main/java/com/xunao/effectdemo/utils/MediaRecorderDemo.java → app/src/main/java/com/bestv/edu/utils/MediaRecorderDemo.java

@@ -1,8 +1,6 @@
-package com.xunao.effectdemo.utils;
+package com.bestv.edu.utils;
 
 import android.media.MediaRecorder;
-import android.os.Handler;
-import android.util.Log;
 
 import java.io.File;
 import java.io.IOException;

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/utils/SoundPoolUtil.java → app/src/main/java/com/bestv/edu/utils/SoundPoolUtil.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.utils;
+package com.bestv.edu.utils;
 
 import android.app.Activity;
 import android.content.Context;

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/view/BezierView.java → app/src/main/java/com/bestv/edu/view/BezierView.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 /*
  * Copyright (C) 2016 venshine.cn@gmail.com

+ 1 - 2
app/src/main/java/com/xunao/effectdemo/view/Calculator.java → app/src/main/java/com/bestv/edu/view/Calculator.java

@@ -1,9 +1,8 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import android.app.Activity;
 import android.os.Build;
 import android.util.DisplayMetrics;
-import android.util.Log;
 import android.view.View;
 import com.xuexiang.xui.widget.guidview.FocusShape;
 

+ 3 - 3
app/src/main/java/com/xunao/effectdemo/view/EnterAnimLayout.java → app/src/main/java/com/bestv/edu/view/EnterAnimLayout.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -7,8 +7,8 @@ import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.widget.FrameLayout;
 
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.anim.Anim;
+import com.bestv.edu.R;
+import com.bestv.edu.anim.Anim;
 
 /**
  * author : 程中强

+ 1 - 3
app/src/main/java/com/xunao/effectdemo/view/FireworkView.java → app/src/main/java/com/bestv/edu/view/FireworkView.java

@@ -1,15 +1,13 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import android.animation.ValueAnimator;
 import android.content.Context;
-import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.View;
 import android.view.animation.DecelerateInterpolator;
-import android.view.animation.LinearInterpolator;
 
 import androidx.annotation.Nullable;
 

+ 1 - 2
app/src/main/java/com/xunao/effectdemo/view/GuideImageView.java → app/src/main/java/com/bestv/edu/view/GuideImageView.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 /**
  * author : 程中强
@@ -19,7 +19,6 @@ import android.graphics.RectF;
 import android.os.Build;
 import androidx.appcompat.widget.AppCompatImageView;
 import android.util.AttributeSet;
-import android.util.Log;
 
 import com.xuexiang.xui.widget.guidview.FocusShape;
 

+ 1 - 2
app/src/main/java/com/xunao/effectdemo/view/MaskFilterView.java → app/src/main/java/com/bestv/edu/view/MaskFilterView.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import android.content.Context;
 import android.graphics.BlurMaskFilter;
@@ -6,7 +6,6 @@ import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.Path;
-import android.graphics.RectF;
 import android.util.AttributeSet;
 import android.view.View;
 

+ 1 - 3
app/src/main/java/com/xunao/effectdemo/view/MyGuideCaseQueue.java → app/src/main/java/com/bestv/edu/view/MyGuideCaseQueue.java

@@ -1,8 +1,6 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import com.xuexiang.xui.widget.guidview.DismissListener;
-import com.xuexiang.xui.widget.guidview.GuideCaseQueue;
-import com.xuexiang.xui.widget.guidview.GuideCaseView;
 import com.xuexiang.xui.widget.guidview.OnCompleteListener;
 
 import java.util.LinkedList;

+ 2 - 5
app/src/main/java/com/xunao/effectdemo/view/MyGuideCaseView.java → app/src/main/java/com/bestv/edu/view/MyGuideCaseView.java

@@ -1,7 +1,6 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
 import android.annotation.TargetApi;
 import android.app.Activity;
 import android.content.Context;
@@ -10,7 +9,6 @@ import android.os.Build;
 import android.text.Spanned;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
-import android.util.Log;
 import android.view.Gravity;
 import android.view.MotionEvent;
 import android.view.View;
@@ -38,8 +36,7 @@ import com.xuexiang.xui.widget.guidview.FocusShape;
 //import com.xuexiang.xui.widget.guidview.GuideImageView;
 import com.xuexiang.xui.widget.guidview.OnViewInflateListener;
 //import com.xuexiang.xui.widget.guidview.Utils;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.activity.AnimActivity;
+import com.bestv.edu.R;
 
 /**
  * author : 程中强

+ 1 - 3
app/src/main/java/com/xunao/effectdemo/view/MyLikeView.java → app/src/main/java/com/bestv/edu/view/MyLikeView.java

@@ -1,8 +1,7 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import android.animation.ValueAnimator;
 import android.content.Context;
-import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Canvas;
@@ -14,7 +13,6 @@ import android.view.View;
 import android.view.animation.LinearInterpolator;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.core.content.ContextCompat;
 
 /**
  * author : 程中强

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/view/MyLinearLayout.java → app/src/main/java/com/bestv/edu/view/MyLinearLayout.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import android.content.ClipData;
 import android.content.Context;
@@ -14,7 +14,7 @@ import android.widget.TextView;
 
 import androidx.annotation.Nullable;
 
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 /**
  * author : 程中强

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/view/MyView.java → app/src/main/java/com/bestv/edu/view/MyView.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 /**
  * author : 程中强

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/view/QuadBezierView.java → app/src/main/java/com/bestv/edu/view/QuadBezierView.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import android.animation.ValueAnimator;
 import android.content.Context;
@@ -13,7 +13,7 @@ import android.view.animation.AccelerateDecelerateInterpolator;
 
 import androidx.annotation.Nullable;
 
-import com.xunao.effectdemo.utils.BezierUtil;
+import com.bestv.edu.utils.BezierUtil;
 
 /**
  * author : 程中强

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/view/SongLyricTextView.kt → app/src/main/java/com/bestv/edu/view/SongLyricTextView.kt

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view
+package com.bestv.edu.view
 
 import android.animation.ValueAnimator
 import android.content.Context

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/view/Utils.kt → app/src/main/java/com/bestv/edu/view/Utils.kt

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view
+package com.bestv.edu.view
 
 import android.content.Context
 import android.graphics.*

+ 3 - 3
app/src/main/java/com/xunao/effectdemo/view/VideoPreviewPlay.java → app/src/main/java/com/bestv/edu/view/VideoPreviewPlay.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view;
+package com.bestv.edu.view;
 
 import android.content.Context;
 import android.util.AttributeSet;
@@ -9,8 +9,8 @@ import android.widget.SeekBar;
 import android.widget.Toast;
 
 import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.utils.SoundPoolUtil;
+import com.bestv.edu.R;
+import com.bestv.edu.utils.SoundPoolUtil;
 
 /**
  * author : 程中强

+ 5 - 5
app/src/main/java/com/xunao/effectdemo/view/circleprogress/CircleProgress.java → app/src/main/java/com/bestv/edu/view/circleprogress/CircleProgress.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view.circleprogress;
+package com.bestv.edu.view.circleprogress;
 
 import android.animation.ValueAnimator;
 import android.content.Context;
@@ -16,10 +16,10 @@ import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
 
-import com.xunao.effectdemo.BuildConfig;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.view.circleprogress.utils.Constant;
-import com.xunao.effectdemo.view.circleprogress.utils.MiscUtil;
+import com.bestv.edu.BuildConfig;
+import com.bestv.edu.R;
+import com.bestv.edu.view.circleprogress.utils.Constant;
+import com.bestv.edu.view.circleprogress.utils.MiscUtil;
 
 
 /**

+ 5 - 6
app/src/main/java/com/xunao/effectdemo/view/circleprogress/DialProgress.java → app/src/main/java/com/bestv/edu/view/circleprogress/DialProgress.java

@@ -1,8 +1,7 @@
-package com.xunao.effectdemo.view.circleprogress;
+package com.bestv.edu.view.circleprogress;
 
 import android.animation.ValueAnimator;
 import android.content.Context;
-import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.Color;
@@ -16,10 +15,10 @@ import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
 
-import com.xunao.effectdemo.BuildConfig;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.view.circleprogress.utils.Constant;
-import com.xunao.effectdemo.view.circleprogress.utils.MiscUtil;
+import com.bestv.edu.BuildConfig;
+import com.bestv.edu.R;
+import com.bestv.edu.view.circleprogress.utils.Constant;
+import com.bestv.edu.view.circleprogress.utils.MiscUtil;
 
 
 /**

+ 5 - 5
app/src/main/java/com/xunao/effectdemo/view/circleprogress/WaveProgress.java → app/src/main/java/com/bestv/edu/view/circleprogress/WaveProgress.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view.circleprogress;
+package com.bestv.edu.view.circleprogress;
 
 import android.animation.Animator;
 import android.animation.ValueAnimator;
@@ -18,10 +18,10 @@ import android.util.Log;
 import android.view.View;
 import android.view.animation.LinearInterpolator;
 
-import com.xunao.effectdemo.BuildConfig;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.view.circleprogress.utils.Constant;
-import com.xunao.effectdemo.view.circleprogress.utils.MiscUtil;
+import com.bestv.edu.BuildConfig;
+import com.bestv.edu.R;
+import com.bestv.edu.view.circleprogress.utils.Constant;
+import com.bestv.edu.view.circleprogress.utils.MiscUtil;
 
 
 /**

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/view/circleprogress/utils/Constant.java → app/src/main/java/com/bestv/edu/view/circleprogress/utils/Constant.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view.circleprogress.utils;
+package com.bestv.edu.view.circleprogress.utils;
 
 /**
  * Created by littlejie on 2017/2/26.

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/view/circleprogress/utils/MiscUtil.java → app/src/main/java/com/bestv/edu/view/circleprogress/utils/MiscUtil.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.view.circleprogress.utils;
+package com.bestv.edu.view.circleprogress.utils;
 
 import android.content.Context;
 import android.graphics.Paint;

+ 1 - 1
app/src/main/java/com/xunao/effectdemo/yzs/ConfigBean.java → app/src/main/java/com/bestv/edu/yzs/ConfigBean.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.yzs;
+package com.bestv.edu.yzs;
 
 import java.io.Serializable;
 

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/yzs/YZSConfigActivity.java → app/src/main/java/com/bestv/edu/yzs/YZSConfigActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.yzs;
+package com.bestv.edu.yzs;
 
 import android.app.Activity;
 import android.app.AlertDialog;
@@ -11,7 +11,7 @@ import android.widget.CheckBox;
 import android.widget.EditText;
 import android.widget.TextView;
 
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 public class YZSConfigActivity extends Activity implements View.OnClickListener {
   private ConfigBean configBean;

+ 2 - 2
app/src/main/java/com/xunao/effectdemo/yzs/YZSDemoActivity.java → app/src/main/java/com/bestv/edu/yzs/YZSDemoActivity.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo.yzs;
+package com.bestv.edu.yzs;
 
 import android.Manifest;
 import android.app.Activity;
@@ -34,7 +34,7 @@ import com.unisound.edu.oraleval.sdk.sep15.IOralEvalSDK;
 import com.unisound.edu.oraleval.sdk.sep15.OralEvalSDKFactory;
 import com.unisound.edu.oraleval.sdk.sep15.SDKError;
 import com.unisound.edu.oraleval.sdk.sep15.utils.OralEvalEnum;
-import com.xunao.effectdemo.R;
+import com.bestv.edu.R;
 
 import java.io.File;
 import java.io.FileOutputStream;

+ 0 - 98
app/src/main/java/com/xunao/effectdemo/activity/GSXYVideoPlayerActivity.java

@@ -1,98 +0,0 @@
-package com.xunao.effectdemo.activity;
-
-import android.app.Activity;
-import android.content.pm.ActivityInfo;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-
-import androidx.annotation.Nullable;
-
-import com.shuyu.gsyvideoplayer.GSYVideoManager;
-import com.shuyu.gsyvideoplayer.utils.OrientationUtils;
-import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
-import com.xunao.effectdemo.R;
-import com.xunao.effectdemo.view.VideoPreviewPlay;
-
-/**
- * author : 程中强
- * e-mail : 740479946@qq.com
- * date : 2022/9/1417:18
- * desc :
- * version: 1.0
- */
-public class GSXYVideoPlayerActivity extends Activity {
-
-	VideoPreviewPlay videoPlayer;
-	private OrientationUtils orientationUtils;
-	private Button btn;
-	private boolean isFirst = false;
-	private String url = "http://v3.cztv.com/cztv/vod/2018/06/28/7c45987529ea410dad7c088ba3b53dac/h264_1500k_mp4.mp4";
-	@Override
-	protected void onCreate(@Nullable Bundle savedInstanceState) {
-		super.onCreate(savedInstanceState);
-		setContentView(R.layout.activity_gsxy_video);
-		init();
-	}
-
-	void init(){
-		videoPlayer = findViewById(R.id.video_play);
-		videoPlayer.setUp(url, true, "null");
-
-
-		//增加title
-		videoPlayer.getTitleTextView().setVisibility(View.GONE);
-		//设置返回键
-		videoPlayer.getBackButton().setOnClickListener(v->{
-			finish();
-		});
-		videoPlayer.getFullscreenButton().setVisibility(View.GONE);
-		orientationUtils = new OrientationUtils(this, videoPlayer);
-		videoPlayer.setIsFinish(isFirst);
-		videoPlayer.setIsTouchWiget(isFirst);
-		videoPlayer.setIsTouchWigetFull(isFirst);
-		videoPlayer.setIfCurrentIsFullscreen(false);
-		videoPlayer.startPlayLogic();
-
-		btn = findViewById(R.id.btn_finish);
-		btn.setOnClickListener(v->{
-			isFirst = !isFirst;
-			videoPlayer.setIsFinish(isFirst);
-//			videoPlayer.setIsTouchWiget(isFirst);
-//			videoPlayer.setIsTouchWigetFull(isFirst);
-		});
-	}
-
-	@Override
-	protected void onResume() {
-		super.onResume();
-		videoPlayer.onVideoResume();
-	}
-
-	@Override
-	protected void onPause() {
-		super.onPause();
-		videoPlayer.onVideoPause();
-	}
-
-	@Override
-	protected void onDestroy() {
-		super.onDestroy();
-		GSYVideoManager.releaseAllVideos();
-		if (orientationUtils != null)
-			orientationUtils.releaseListener();
-	}
-
-//	@Override
-//	public void onBackPressed() {
-//		//先返回正常状态
-//		if (orientationUtils.getScreenType() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
-//			videoPlayer.getFullscreenButton().performClick();
-//			return;
-//		}
-//		//释放所有
-//		videoPlayer.setVideoAllCallBack(null);
-//		super.onBackPressed();
-//	}
-}

+ 1 - 1
app/src/main/res/layout/activity_congratulations.xml

@@ -34,7 +34,7 @@
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center">
-           <com.xunao.effectdemo.view.FireworkView
+           <com.bestv.edu.view.FireworkView
                android:id="@+id/fl_firework"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

+ 1 - 1
app/src/main/res/layout/activity_count_down.xml

@@ -12,7 +12,7 @@
         android:layout_marginTop="30dp"
         android:orientation="horizontal">
 
-        <com.xunao.effectdemo.view.circleprogress.DialProgress
+        <com.bestv.edu.view.circleprogress.DialProgress
             android:id="@+id/dial_progress"
             android:layout_width="80dp"
             android:layout_height="80dp"

+ 32 - 32
app/src/main/res/layout/activity_enty_anim.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<com.xunao.effectdemo.view.EnterAnimLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<com.bestv.edu.view.EnterAnimLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/activity_main"
@@ -14,7 +14,7 @@
         android:paddingBottom="@dimen/activity_vertical_margin"
         android:orientation="vertical">
 
-        <com.xunao.effectdemo.view.EnterAnimLayout
+        <com.bestv.edu.view.EnterAnimLayout
             android:id="@+id/anim_layout"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -50,7 +50,7 @@
                 </LinearLayout>
 
             </LinearLayout>
-        </com.xunao.effectdemo.view.EnterAnimLayout>
+        </com.bestv.edu.view.EnterAnimLayout>
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -73,7 +73,7 @@
                 android:orientation="vertical"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content">
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_baiyechuang"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -86,8 +86,8 @@
                         android:textSize="24sp"
                         android:text="百叶窗效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_cachu"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -99,8 +99,8 @@
                         android:layout_height="wrap_content"
                         android:text="擦除效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_hezhuang"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -112,8 +112,8 @@
                         android:layout_height="wrap_content"
                         android:text="盒状效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_jieti"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -127,8 +127,8 @@
 
                         android:text="阶梯效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_lingxing"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -140,8 +140,8 @@
                         android:layout_height="wrap_content"
                         android:text="菱形效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_lunzi"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -153,8 +153,8 @@
                         android:layout_height="wrap_content"
                         android:text="轮子效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_pilie"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -166,8 +166,8 @@
                         android:layout_height="wrap_content"
                         android:text="劈裂效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_qipan"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -179,8 +179,8 @@
                         android:layout_height="wrap_content"
                         android:text="棋盘效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_qieru"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -193,8 +193,8 @@
                         android:text="切入效果"
                         android:textSize="26sp"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_shanxingzhankai"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -206,8 +206,8 @@
                         android:layout_height="wrap_content"
                         android:text="扇形展开效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_shizixingkuozhan"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -219,8 +219,8 @@
                         android:layout_height="wrap_content"
                         android:text="十字扩展效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_suijixiantiao"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -233,8 +233,8 @@
                         android:text="随机线条效果"
                         android:textSize="30sp"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_xiangneirongjie"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -247,8 +247,8 @@
                         android:text="向内溶解效果"
                         android:textSize="28sp"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
-                <com.xunao.effectdemo.view.EnterAnimLayout
+                </com.bestv.edu.view.EnterAnimLayout>
+                <com.bestv.edu.view.EnterAnimLayout
                     android:id="@+id/anim_yuanxingkuozhan"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
@@ -260,7 +260,7 @@
                         android:layout_height="wrap_content"
                         android:text="圆形扩展效果"
                         />
-                </com.xunao.effectdemo.view.EnterAnimLayout>
+                </com.bestv.edu.view.EnterAnimLayout>
 
             </LinearLayout>
 
@@ -269,5 +269,5 @@
 
     </LinearLayout>
 
-</com.xunao.effectdemo.view.EnterAnimLayout>
+</com.bestv.edu.view.EnterAnimLayout>
 

+ 7 - 1
app/src/main/res/layout/activity_gsxy_video.xml

@@ -3,7 +3,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <com.xunao.effectdemo.view.VideoPreviewPlay
+    <com.bestv.edu.view.VideoPreviewPlay
         android:id="@+id/video_play"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -16,4 +16,10 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>
 
+    <RelativeLayout
+        android:id="@+id/mBrowseContainer"
+        android:visibility="gone"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
 </RelativeLayout>

+ 2 - 2
app/src/main/res/layout/activity_list.xml

@@ -7,7 +7,7 @@
     android:layout_height="match_parent"
     android:background="@color/colorWhite">
 
-    <com.xunao.effectdemo.DragGridView
+    <com.bestv.edu.DragGridView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:listSelector="@android:color/transparent"
@@ -19,7 +19,7 @@
         android:horizontalSpacing="10dp"
         android:stretchMode="columnWidth">
 
-    </com.xunao.effectdemo.DragGridView>
+    </com.bestv.edu.DragGridView>
 
 
 </RelativeLayout>

+ 2 - 2
app/src/main/res/layout/activity_progress.xml

@@ -80,7 +80,7 @@
         app:cpv_track_width="4dp"
         app:cpv_progress_width="8dp"/>
 
-    <com.xunao.effectdemo.view.circleprogress.CircleProgress
+    <com.bestv.edu.view.circleprogress.CircleProgress
         android:id="@+id/circle_progress_bar1"
         android:visibility="gone"
         android:layout_width="wrap_content"
@@ -100,7 +100,7 @@
         app:value="10000"
         app:valueSize="25sp"/>
 
-    <com.xunao.effectdemo.view.circleprogress.DialProgress
+    <com.bestv.edu.view.circleprogress.DialProgress
         android:id="@+id/dial_progress_bar"
         android:layout_width="200dp"
         android:layout_height="200dp"

+ 1 - 1
app/src/main/res/layout/activity_songe.xml

@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <com.xunao.effectdemo.view.SongLyricTextView
+    <com.bestv.edu.view.SongLyricTextView
         android:id="@+id/text"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"

+ 2 - 2
app/src/main/res/layout/activity_test.xml

@@ -18,13 +18,13 @@
         android:layout_height="100dp"
         android:background="@color/xui_config_color_red" />
 
-    <com.xunao.effectdemo.view.MyView
+    <com.bestv.edu.view.MyView
         android:id="@+id/my_view"
         android:visibility="gone"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
-    <com.xunao.effectdemo.view.MaskFilterView
+    <com.bestv.edu.view.MaskFilterView
         android:id="@+id/mask"
         android:visibility="gone"
         android:layout_width="160dp"

+ 4 - 4
app/src/main/res/layout/activity_test2.xml

@@ -112,7 +112,7 @@
             android:layout_height="250dp"
             android:layout_marginTop="120dp"
             android:orientation="horizontal">
-            <com.xunao.effectdemo.view.MyLinearLayout
+            <com.bestv.edu.view.MyLinearLayout
                 android:visibility="gone"
                 android:layout_width="80dp"
                 android:layout_height="130dp"
@@ -143,7 +143,7 @@
                         />
                 </LinearLayout>
             </LinearLayout>
-            <com.xunao.effectdemo.view.MyLinearLayout
+            <com.bestv.edu.view.MyLinearLayout
                 android:visibility="gone"
                 android:layout_width="80dp"
                 android:layout_height="130dp"
@@ -177,7 +177,7 @@
                 </LinearLayout>
             </LinearLayout>
 
-            <com.xunao.effectdemo.view.MyLinearLayout
+            <com.bestv.edu.view.MyLinearLayout
                 android:visibility="gone"
                 android:layout_width="80dp"
                 android:layout_height="130dp"
@@ -209,7 +209,7 @@
                         />
                 </LinearLayout>
             </LinearLayout>
-            <com.xunao.effectdemo.view.MyLinearLayout
+            <com.bestv.edu.view.MyLinearLayout
                 android:visibility="gone"
                 android:layout_width="80dp"
                 android:layout_height="130dp"

+ 2 - 2
app/src/main/res/navigation/nav_graph.xml

@@ -7,7 +7,7 @@
 
     <fragment
         android:id="@+id/FirstFragment"
-        android:name="com.xunao.effectdemo.activity.FirstFragment"
+        android:name="com.bestv.edu.activity.FirstFragment"
         android:label="@string/first_fragment_label"
         tools:layout="@layout/fragment_first">
 
@@ -17,7 +17,7 @@
     </fragment>
     <fragment
         android:id="@+id/SecondFragment"
-        android:name="com.xunao.effectdemo.activity.SecondFragment"
+        android:name="com.bestv.edu.activity.SecondFragment"
         android:label="@string/second_fragment_label"
         tools:layout="@layout/fragment_second">
 

+ 1 - 1
app/src/test/java/com/xunao/effectdemo/ExampleUnitTest.java → app/src/test/java/com/bestv/edu/ExampleUnitTest.java

@@ -1,4 +1,4 @@
-package com.xunao.effectdemo;
+package com.bestv.edu;
 
 import org.junit.Test;