Bladeren bron

修改视频videoPlayer

杨充 5 jaren geleden
bovenliggende
commit
d6f64530fb

+ 2 - 1
VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/controller/BaseVideoController.java

@@ -17,6 +17,7 @@ import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import org.yczbj.ycvideoplayerlib.config.ConstantKeys;
+import org.yczbj.ycvideoplayerlib.player.InterVideoPlayer;
 import org.yczbj.ycvideoplayerlib.player.VideoViewManager;
 import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 import org.yczbj.ycvideoplayerlib.tool.utils.StatesCutoutUtils;
@@ -116,7 +117,7 @@ public abstract class BaseVideoController extends FrameLayout implements InterVi
      * 重要:此方法用于将{@link VideoPlayer} 和控制器绑定
      */
     @CallSuper
-    public void setMediaPlayer(MediaPlayerControl mediaPlayer) {
+    public void setMediaPlayer(InterVideoPlayer mediaPlayer) {
         mControlWrapper = new ControlWrapper(mediaPlayer, this);
         //绑定ControlComponent和Controller
         for (Map.Entry<IControlComponent, Boolean> next : mControlComponents.entrySet()) {

+ 30 - 28
VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/controller/ControlWrapper.java

@@ -6,138 +6,140 @@ import android.graphics.Bitmap;
 
 import androidx.annotation.NonNull;
 
+import org.yczbj.ycvideoplayerlib.player.InterVideoPlayer;
+
 /**
  * 此类的目的是为了在ControlComponent中既能调用VideoView的api又能调用BaseVideoController的api,
  * 并对部分api做了封装,方便使用
  */
-public class ControlWrapper implements MediaPlayerControl, InterVideoController {
+public class ControlWrapper implements InterVideoPlayer, InterVideoController {
     
-    private MediaPlayerControl mPlayerControl;
+    private InterVideoPlayer mVideoPlayer;
     private InterVideoController mController;
     
-    public ControlWrapper(@NonNull MediaPlayerControl playerControl, @NonNull InterVideoController controller) {
-        mPlayerControl = playerControl;
+    public ControlWrapper(@NonNull InterVideoPlayer videoPlayer, @NonNull InterVideoController controller) {
+        mVideoPlayer = videoPlayer;
         mController = controller;
     }
     
     @Override
     public void start() {
-        mPlayerControl.start();
+        mVideoPlayer.start();
     }
 
     @Override
     public void pause() {
-        mPlayerControl.pause();
+        mVideoPlayer.pause();
     }
 
     @Override
     public long getDuration() {
-        return mPlayerControl.getDuration();
+        return mVideoPlayer.getDuration();
     }
 
     @Override
     public long getCurrentPosition() {
-        return mPlayerControl.getCurrentPosition();
+        return mVideoPlayer.getCurrentPosition();
     }
 
     @Override
     public void seekTo(long pos) {
-        mPlayerControl.seekTo(pos);
+        mVideoPlayer.seekTo(pos);
     }
 
     @Override
     public boolean isPlaying() {
-        return mPlayerControl.isPlaying();
+        return mVideoPlayer.isPlaying();
     }
 
     @Override
     public int getBufferedPercentage() {
-        return mPlayerControl.getBufferedPercentage();
+        return mVideoPlayer.getBufferedPercentage();
     }
 
     @Override
     public void startFullScreen() {
-        mPlayerControl.startFullScreen();
+        mVideoPlayer.startFullScreen();
     }
 
     @Override
     public void stopFullScreen() {
-        mPlayerControl.stopFullScreen();
+        mVideoPlayer.stopFullScreen();
     }
 
     @Override
     public boolean isFullScreen() {
-        return mPlayerControl.isFullScreen();
+        return mVideoPlayer.isFullScreen();
     }
 
     @Override
     public void setMute(boolean isMute) {
-        mPlayerControl.setMute(isMute);
+        mVideoPlayer.setMute(isMute);
     }
 
     @Override
     public boolean isMute() {
-        return mPlayerControl.isMute();
+        return mVideoPlayer.isMute();
     }
 
     @Override
     public void setScreenScaleType(int screenScaleType) {
-        mPlayerControl.setScreenScaleType(screenScaleType);
+        mVideoPlayer.setScreenScaleType(screenScaleType);
     }
 
     @Override
     public void setSpeed(float speed) {
-        mPlayerControl.setSpeed(speed);
+        mVideoPlayer.setSpeed(speed);
     }
 
     @Override
     public float getSpeed() {
-        return mPlayerControl.getSpeed();
+        return mVideoPlayer.getSpeed();
     }
 
     @Override
     public long getTcpSpeed() {
-        return mPlayerControl.getTcpSpeed();
+        return mVideoPlayer.getTcpSpeed();
     }
 
     @Override
     public void replay(boolean resetPosition) {
-        mPlayerControl.replay(resetPosition);
+        mVideoPlayer.replay(resetPosition);
     }
 
     @Override
     public void setMirrorRotation(boolean enable) {
-        mPlayerControl.setMirrorRotation(enable);
+        mVideoPlayer.setMirrorRotation(enable);
     }
 
     @Override
     public Bitmap doScreenShot() {
-        return mPlayerControl.doScreenShot();
+        return mVideoPlayer.doScreenShot();
     }
 
     @Override
     public int[] getVideoSize() {
-        return mPlayerControl.getVideoSize();
+        return mVideoPlayer.getVideoSize();
     }
 
     @Override
     public void setRotation(float rotation) {
-        mPlayerControl.setRotation(rotation);
+        mVideoPlayer.setRotation(rotation);
     }
 
     @Override
     public void startTinyScreen() {
-        mPlayerControl.startTinyScreen();
+        mVideoPlayer.startTinyScreen();
     }
 
     @Override
     public void stopTinyScreen() {
-        mPlayerControl.stopTinyScreen();
+        mVideoPlayer.stopTinyScreen();
     }
 
     @Override
     public boolean isTinyScreen() {
-        return mPlayerControl.isTinyScreen();
+        return mVideoPlayer.isTinyScreen();
     }
 
     /**

+ 0 - 56
VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/controller/MediaPlayerControl.java

@@ -1,56 +0,0 @@
-package org.yczbj.ycvideoplayerlib.controller;
-
-import android.graphics.Bitmap;
-
-import org.yczbj.ycvideoplayerlib.config.ConstantKeys;
-
-public interface MediaPlayerControl {
-
-    void start();
-
-    void pause();
-
-    long getDuration();
-
-    long getCurrentPosition();
-
-    void seekTo(long pos);
-
-    boolean isPlaying();
-
-    int getBufferedPercentage();
-
-    void startFullScreen();
-
-    void stopFullScreen();
-
-    boolean isFullScreen();
-
-    void setMute(boolean isMute);
-
-    boolean isMute();
-
-    void setScreenScaleType(@ConstantKeys.ScreenScaleType int screenScaleType);
-
-    void setSpeed(float speed);
-
-    float getSpeed();
-
-    long getTcpSpeed();
-
-    void replay(boolean resetPosition);
-
-    void setMirrorRotation(boolean enable);
-
-    Bitmap doScreenShot();
-
-    int[] getVideoSize();
-
-    void setRotation(float rotation);
-
-    void startTinyScreen();
-
-    void stopTinyScreen();
-
-    boolean isTinyScreen();
-}

+ 1 - 1
VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/inter/player/InterPropertyVideoPlayer.java → VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/inter/player/InterVideoPlayer2.java

@@ -24,7 +24,7 @@ package org.yczbj.ycvideoplayerlib.inter.player;
  *     revise: 播放器基础属性获取和设置属性接口
  * </pre>
  */
-public interface InterPropertyVideoPlayer {
+public interface InterVideoPlayer2 {
 
     /**
      * seek到制定的位置继续播放

+ 81 - 0
VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/player/InterVideoPlayer.java

@@ -0,0 +1,81 @@
+/*
+Copyright 2017 yangchong211(github.com/yangchong211)
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package org.yczbj.ycvideoplayerlib.player;
+
+import android.graphics.Bitmap;
+
+import org.yczbj.ycvideoplayerlib.config.ConstantKeys;
+
+/**
+ * <pre>
+ *     @author yangchong
+ *     blog  : https://github.com/yangchong211
+ *     time  : 2017/11/21
+ *     desc  : VideoPlayer抽象接口
+ *     revise: 播放器基础属性获取和设置属性接口
+ * </pre>
+ */
+public interface InterVideoPlayer {
+
+    void start();
+
+    void pause();
+
+    long getDuration();
+
+    long getCurrentPosition();
+
+    void seekTo(long pos);
+
+    boolean isPlaying();
+
+    int getBufferedPercentage();
+
+    void startFullScreen();
+
+    void stopFullScreen();
+
+    boolean isFullScreen();
+
+    void setMute(boolean isMute);
+
+    boolean isMute();
+
+    void setScreenScaleType(@ConstantKeys.ScreenScaleType int screenScaleType);
+
+    void setSpeed(float speed);
+
+    float getSpeed();
+
+    long getTcpSpeed();
+
+    void replay(boolean resetPosition);
+
+    void setMirrorRotation(boolean enable);
+
+    Bitmap doScreenShot();
+
+    int[] getVideoSize();
+
+    void setRotation(float rotation);
+
+    void startTinyScreen();
+
+    void stopTinyScreen();
+
+    boolean isTinyScreen();
+
+}

+ 1 - 2
VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/player/VideoPlayer.java

@@ -24,7 +24,6 @@ import android.widget.FrameLayout;
 import org.yczbj.ycvideoplayerlib.R;
 import org.yczbj.ycvideoplayerlib.config.ConstantKeys;
 import org.yczbj.ycvideoplayerlib.controller.BaseVideoController;
-import org.yczbj.ycvideoplayerlib.controller.MediaPlayerControl;
 
 import com.yc.kernel.inter.AbstractPlayer;
 import com.yc.kernel.factory.PlayerFactory;
@@ -52,7 +51,7 @@ import java.util.Map;
  * </pre>
  */
 public class VideoPlayer<P extends AbstractPlayer> extends FrameLayout
-        implements MediaPlayerControl, AbstractPlayer.PlayerEventListener {
+        implements InterVideoPlayer, AbstractPlayer.PlayerEventListener {
 
     private Context mContext;
     /**

+ 61 - 0
VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/tool/toast/BaseToast.java

@@ -21,6 +21,7 @@ import android.app.Application;
 import android.content.Context;
 import android.graphics.Color;
 import android.os.Build;
+import android.os.Handler;
 import android.os.Looper;
 
 import androidx.annotation.ColorInt;
@@ -29,6 +30,7 @@ import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.cardview.widget.CardView;
 
+import android.os.Message;
 import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -39,6 +41,7 @@ import android.widget.Toast;
 import org.yczbj.ycvideoplayerlib.R;
 
 import java.lang.ref.SoftReference;
+import java.lang.reflect.Field;
 
 
 /**
@@ -322,5 +325,63 @@ public final class BaseToast {
         return (int) (dpValue * scale + 0.5f);
     }
 
+    /**
+     * <pre>
+     *     @author yangchong
+     *     email  : yangchong211@163.com
+     *     time  : 20120/5/6
+     *     desc  : 利用hook解决toast崩溃问题
+     *     revise:
+     * </pre>
+     */
+    public static class HookToast {
+
+        private static Field sField_TN;
+        private static Field sField_TN_Handler;
+
+        static {
+            try {
+                Class<?> clazz =  Toast.class;
+                sField_TN = clazz.getDeclaredField("mTN");
+                sField_TN.setAccessible(true);
+                sField_TN_Handler = sField_TN.getType().getDeclaredField("mHandler");
+                sField_TN_Handler.setAccessible(true);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+        public static void hook(Toast toast) {
+            try {
+                Object tn = sField_TN.get(toast);
+                Handler preHandler = (Handler) sField_TN_Handler.get(tn);
+                sField_TN_Handler.set(tn, new HookToast.SafelyHandler(preHandler));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+        public static class SafelyHandler extends Handler {
+
+            private Handler impl;
 
+            public SafelyHandler(Handler impl) {
+                this.impl = impl;
+            }
+
+            public void dispatchMessage(Message msg) {
+                try {
+                    super.dispatchMessage(msg);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+
+            public void handleMessage(Message msg) {
+                //需要委托给原Handler执行
+                impl.handleMessage(msg);
+            }
+        }
+
+    }
 }

+ 0 - 73
VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/tool/toast/HookToast.java

@@ -1,73 +0,0 @@
-package org.yczbj.ycvideoplayerlib.tool.toast;
-
-import android.os.Handler;
-import android.os.Message;
-import android.widget.Toast;
-
-import java.lang.reflect.Field;
-
-/**
- * <pre>
- *     @author yangchong
- *     email  : yangchong211@163.com
- *     time  : 20120/5/6
- *     desc  : 利用hook解决toast崩溃问题
- *     revise:
- * </pre>
- */
-public class HookToast {
-
-    private static Field sField_TN;
-    private static Field sField_TN_Handler;
-
-    static {
-        try {
-            Class<?> clazz =  Toast.class;
-            sField_TN = clazz.getDeclaredField("mTN");
-            sField_TN.setAccessible(true);
-            sField_TN_Handler = sField_TN.getType().getDeclaredField("mHandler");
-            sField_TN_Handler.setAccessible(true);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public static void hook(Toast toast) {
-        try {
-            Object tn = sField_TN.get(toast);
-            Handler preHandler = (Handler) sField_TN_Handler.get(tn);
-            sField_TN_Handler.set(tn, new SafelyHandler(preHandler));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /*public void showToast(Context context, CharSequence cs, int length) {
-        Toast mToast = Toast.makeText(context, cs, length);
-        hook(mToast);
-        mToast.show();
-    }*/
-
-    public static class SafelyHandler extends Handler {
-
-        private Handler impl;
-
-        public SafelyHandler(Handler impl) {
-            this.impl = impl;
-        }
-
-        public void dispatchMessage(Message msg) {
-            try {
-                super.dispatchMessage(msg);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
-        public void handleMessage(Message msg) {
-            //需要委托给原Handler执行
-            impl.handleMessage(msg);
-        }
-    }
-
-}

+ 2 - 2
VideoPlayer/src/main/java/org/yczbj/ycvideoplayerlib/view/player/VideoPlayer.java

@@ -31,8 +31,8 @@ import android.widget.FrameLayout;
 import com.yc.kernel.utils.VideoLogUtils;
 
 import org.yczbj.ycvideoplayerlib.config.ConstantKeys;
+import org.yczbj.ycvideoplayerlib.inter.player.InterVideoPlayer2;
 import org.yczbj.ycvideoplayerlib.view.controller.AbsVideoPlayerController;
-import org.yczbj.ycvideoplayerlib.inter.player.InterPropertyVideoPlayer;
 import org.yczbj.ycvideoplayerlib.inter.player.InterScreenVideoPlayer;
 import org.yczbj.ycvideoplayerlib.inter.player.InterStateVideoPlayer;
 import org.yczbj.ycvideoplayerlib.tool.manager.VideoPlayerManager;
@@ -56,7 +56,7 @@ import tv.danmaku.ijk.media.player.IjkMediaPlayer;
  *             android:screenOrientation="portrait"
  * </pre>
  */
-public class VideoPlayer extends FrameLayout implements InterPropertyVideoPlayer,
+public class VideoPlayer extends FrameLayout implements InterVideoPlayer2,
         InterScreenVideoPlayer ,InterStateVideoPlayer {
 
     /**