Просмотр исходного кода

1,修改icon
2, 去掉遗留下来的loading动画图片
3,播放器逻辑修改:每次将视频结束,都会释放BaseMediaplayer对象,vrLib库对象和GLSurface对象;并且重新初始化

lyn лет назад: 5
Родитель
Сommit
bbde103dab
29 измененных файлов с 65 добавлено и 37 удалено
  1. 1 1
      app/src/main/AndroidManifest.xml
  2. 37 8
      app/src/main/java/com/haochuan/hciptvbasic/BaseWebActivity.java
  3. 14 1
      app/src/main/java/com/haochuan/hciptvbasic/util/VRUtil.java
  4. 9 0
      app/src/main/java/com/haochuan/hciptvbasic/webview/PlayerToJS.java
  5. 0 26
      app/src/main/res/drawable/frame_anim.xml
  6. BIN
      app/src/main/res/drawable/loading_anim_0.png
  7. BIN
      app/src/main/res/drawable/loading_anim_1.png
  8. BIN
      app/src/main/res/drawable/loading_anim_10.png
  9. BIN
      app/src/main/res/drawable/loading_anim_11.png
  10. BIN
      app/src/main/res/drawable/loading_anim_12.png
  11. BIN
      app/src/main/res/drawable/loading_anim_13.png
  12. BIN
      app/src/main/res/drawable/loading_anim_14.png
  13. BIN
      app/src/main/res/drawable/loading_anim_15.png
  14. BIN
      app/src/main/res/drawable/loading_anim_16.png
  15. BIN
      app/src/main/res/drawable/loading_anim_17.png
  16. BIN
      app/src/main/res/drawable/loading_anim_18.png
  17. BIN
      app/src/main/res/drawable/loading_anim_19.png
  18. BIN
      app/src/main/res/drawable/loading_anim_2.png
  19. BIN
      app/src/main/res/drawable/loading_anim_20.png
  20. BIN
      app/src/main/res/drawable/loading_anim_21.png
  21. BIN
      app/src/main/res/drawable/loading_anim_3.png
  22. BIN
      app/src/main/res/drawable/loading_anim_4.png
  23. BIN
      app/src/main/res/drawable/loading_anim_5.png
  24. BIN
      app/src/main/res/drawable/loading_anim_6.png
  25. BIN
      app/src/main/res/drawable/loading_anim_7.png
  26. BIN
      app/src/main/res/drawable/loading_anim_8.png
  27. BIN
      app/src/main/res/drawable/loading_anim_9.png
  28. BIN
      app/src/main/res/drawable/loading_bg.jpg
  29. 4 1
      ijkvideo/src/main/java/com/haochuan/systemvideo/IjkVideoPlayer.java

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

@@ -32,7 +32,7 @@
     <application
         android:name=".BaseApp"
         android:allowBackup="true"
-        android:icon="@mipmap/ic_launcher"
+        android:icon="@drawable/icon"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"

+ 37 - 8
app/src/main/java/com/haochuan/hciptvbasic/BaseWebActivity.java

@@ -33,6 +33,7 @@ import com.haochuan.core.http.ResponseListener;
 import com.haochuan.core.http.bean.ApkSettingBean;
 import com.haochuan.core.http.bean.ResponseBean;
 import com.haochuan.core.util.ELS;
+import com.haochuan.core.util.HandlerUtil;
 import com.haochuan.hciptvbasic.util.VRUtil;
 import com.haochuan.hciptvbasic.webview.PayToJS;
 import com.haochuan.hciptvbasic.webview.PlayerToJS;
@@ -54,6 +55,7 @@ public abstract class BaseWebActivity extends AppCompatActivity {
     //播放器
     private BaseMediaPlayer mHCPlayer = null;
     protected ELS els;
+    VRUtil vrUtil;
 
     //vr模块
     MDVRLibrary mVRLibrary;
@@ -119,20 +121,15 @@ public abstract class BaseWebActivity extends AppCompatActivity {
         //初始化日志
         Logger.init(this,getWebView());
 
-
-
-        //初始化播放器
-        initPlayer();
-
-        //初始化vr模块
-        mVRLibrary = new VRUtil().createVRLibrary(this,mHCPlayer);
-
         webView = new WebView(this);
         webView.setBackgroundColor(ContextCompat.getColor(this, android.R.color.transparent));
         setContentView(webView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
 
         initWebSetting(webView);
 
+        //初始化播放器和vr
+        initPlayerAndVr();
+
         runH5();
     }
 
@@ -283,8 +280,40 @@ public abstract class BaseWebActivity extends AppCompatActivity {
     }
 
 
+    /*
+    * 初始化vrLib库
+    * */
+    private void initVrLib(){
+        if(vrUtil == null){
+            vrUtil = new VRUtil();
+        }
+        mVRLibrary = vrUtil.createVRLibrary(this,mHCPlayer);
+    }
 
+    /**
+     *
+     * 初始化播放器和vr
+     */
+    public void initPlayerAndVr(){
+        HandlerUtil.runOnUiThread(()->{
+            Logger.d("刷新播放器");
+            //先将播放器和vr库消除
+            mHCPlayer = null;
+            mVRLibrary = null;
+            if(vrUtil !=null){
+                vrUtil.release(this);
+            }
+            //再初始化播放器和vr库
+            initPlayer();
+            initVrLib();
+            getPlayerToJS().setBaseMediaPlayer(mHCPlayer);
+        });
+    }
 
+    /**
+     * 初始化webview
+     * @param webView
+     */
     @SuppressLint({"SetJavaScriptEnabled", "JavascriptInterface", "AddJavascriptInterface"})
     private void initWebSetting(WebView webView) {
         Logger.d("BaseWebActivity,initWebSetting()");

+ 14 - 1
app/src/main/java/com/haochuan/hciptvbasic/util/VRUtil.java

@@ -17,15 +17,19 @@ import com.asha.vrlib.model.MDPinchConfig;
 import com.haochuan.core.BaseMediaPlayer;
 import com.haochuan.core.Logger;
 
+import static com.haochuan.core.util.MessageCode.PLAYER_OBJ_NULL;
+
 /**
  * @author: xulin
  * @projectName:HcIPTVBasic
  * @createTime:2020/6/5 16:23
  */
 public class VRUtil {
+    GLSurfaceView glSurfaceView;
+
     public MDVRLibrary createVRLibrary(Context context, BaseMediaPlayer mMediaPlayerWrapper) {
         //初始化GLSurfaceView,并将它添加到view树中
-        GLSurfaceView glSurfaceView = new GLSurfaceView(context);
+        glSurfaceView = new GLSurfaceView(context);
         FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
         glSurfaceView.setLayoutParams(params);
 
@@ -64,4 +68,13 @@ public class VRUtil {
                 .barrelDistortionConfig(new BarrelDistortionConfig().setDefaultEnabled(false).setScale(0.95f))
                 .build(glSurfaceView);
     }
+
+    public void release(Activity activity){
+        if(glSurfaceView != null && glSurfaceView.getParent() != null){
+            ViewGroup viewGroup = (ViewGroup) activity.getWindow().getDecorView();
+            viewGroup.removeView(glSurfaceView);
+        }else{
+            Logger.e(PLAYER_OBJ_NULL,"播放器对象为null,不能调用destroyVideo函数");
+        }
+    }
 }

+ 9 - 0
app/src/main/java/com/haochuan/hciptvbasic/webview/PlayerToJS.java

@@ -56,6 +56,10 @@ public class PlayerToJS {
     }
 
 
+    public void setBaseMediaPlayer(BaseMediaPlayer mediaPlayer){
+        this.baseMediaPlayer = mediaPlayer;
+    }
+
 
     /*---------------------------事件函数---------------------------*/
     /*
@@ -297,6 +301,11 @@ public class PlayerToJS {
         try{
             Activity activity = (Activity)context;
             activity.runOnUiThread(this::destroyVideo);
+            //刷新播放器和库
+            if(activity instanceof BaseWebActivity){
+                BaseWebActivity baseWebActivity = (BaseWebActivity)activity;
+                baseWebActivity.initPlayerAndVr();
+            }
             return SUCCESS;
         }catch (Exception e){
             e.printStackTrace();

+ 0 - 26
app/src/main/res/drawable/frame_anim.xml

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
-    android:oneshot="false">
-    <item android:drawable="@drawable/loading_anim_0" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_1" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_2" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_3" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_4" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_5" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_6" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_7" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_8" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_9" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_10" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_11" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_12" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_13" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_14" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_15" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_16" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_17" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_18" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_19" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_20" android:duration="100"/>
-    <item android:drawable="@drawable/loading_anim_21" android:duration="100"/>
-</animation-list>

BIN
app/src/main/res/drawable/loading_anim_0.png


BIN
app/src/main/res/drawable/loading_anim_1.png


BIN
app/src/main/res/drawable/loading_anim_10.png


BIN
app/src/main/res/drawable/loading_anim_11.png


BIN
app/src/main/res/drawable/loading_anim_12.png


BIN
app/src/main/res/drawable/loading_anim_13.png


BIN
app/src/main/res/drawable/loading_anim_14.png


BIN
app/src/main/res/drawable/loading_anim_15.png


BIN
app/src/main/res/drawable/loading_anim_16.png


BIN
app/src/main/res/drawable/loading_anim_17.png


BIN
app/src/main/res/drawable/loading_anim_18.png


BIN
app/src/main/res/drawable/loading_anim_19.png


BIN
app/src/main/res/drawable/loading_anim_2.png


BIN
app/src/main/res/drawable/loading_anim_20.png


BIN
app/src/main/res/drawable/loading_anim_21.png


BIN
app/src/main/res/drawable/loading_anim_3.png


BIN
app/src/main/res/drawable/loading_anim_4.png


BIN
app/src/main/res/drawable/loading_anim_5.png


BIN
app/src/main/res/drawable/loading_anim_6.png


BIN
app/src/main/res/drawable/loading_anim_7.png


BIN
app/src/main/res/drawable/loading_anim_8.png


BIN
app/src/main/res/drawable/loading_anim_9.png


BIN
app/src/main/res/drawable/loading_bg.jpg


+ 4 - 1
ijkvideo/src/main/java/com/haochuan/systemvideo/IjkVideoPlayer.java

@@ -30,6 +30,8 @@ public class IjkVideoPlayer extends BaseMediaPlayer {
     private int startTime = 0;//播放器开始的时间,单位毫秒
 
 
+
+
     //ijk player播放器全局参数
 
     public IjkVideoPlayer(@NonNull Context context) {
@@ -120,7 +122,6 @@ public class IjkVideoPlayer extends BaseMediaPlayer {
                 Logger.e(PLAYER_OBJ_NULL,"播放器对象为null,退出执行");
                 return;
             }
-            mediaPlayer.reset();
             mediaPlayer.setDataSource(url);
             mediaPlayer.prepareAsync();
             playerStatus = MediaStatusCode.PREPARE;  //视频准备中;
@@ -191,6 +192,8 @@ public class IjkVideoPlayer extends BaseMediaPlayer {
             return;
         }
         mediaPlayer.release();
+        mediaPlayer.setSurface(null);
+        mediaPlayer = null;
         mHadPrepared = false;
         playerStatus = MediaStatusCode.STOP;   //暂停中;
         iVideoPlayer.onDestroy();