DetailPlayer.java 6.2 KB
Newer Older
S
shuyu 已提交
1 2
package com.example.gsyvideoplayer;

S
1.3.6  
shuyu 已提交
3 4
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
S
shuyu 已提交
5 6 7 8 9 10 11
import android.os.Bundle;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;

S
1.3.6  
shuyu 已提交
12
import com.example.gsyvideoplayer.listener.SampleListener;
S
shuyu 已提交
13
import com.example.gsyvideoplayer.video.DanmakuVideoPlayer;
S
shuyu 已提交
14
import com.example.gsyvideoplayer.video.LandLayoutVideo;
S
shuyu 已提交
15
import com.shuyu.gsyvideoplayer.GSYPreViewManager;
S
shuyu 已提交
16
import com.shuyu.gsyvideoplayer.GSYVideoPlayer;
S
shuyu 已提交
17

18
import com.shuyu.gsyvideoplayer.listener.LockClickListener;
S
shuyu 已提交
19
import com.shuyu.gsyvideoplayer.utils.OrientationUtils;
S
shuyu 已提交
20
import com.shuyu.gsyvideoplayer.video.CustomGSYVideoPlayer;
S
shuyu 已提交
21
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
S
shuyu 已提交
22

S
shuyu 已提交
23 24 25 26 27

import butterknife.BindView;
import butterknife.ButterKnife;


S
shuyu 已提交
28
public class DetailPlayer extends AppCompatActivity {
S
shuyu 已提交
29 30 31

    @BindView(R.id.post_detail_nested_scroll)
    NestedScrollView postDetailNestedScroll;
S
shuyu 已提交
32 33 34

    //推荐使用StandardGSYVideoPlayer,功能一致
    //CustomGSYVideoPlayer部分功能处于试验阶段
S
shuyu 已提交
35
    @BindView(R.id.detail_player)
S
shuyu 已提交
36
    DanmakuVideoPlayer detailPlayer;
S
shuyu 已提交
37

S
shuyu 已提交
38 39 40
    @BindView(R.id.activity_detail_player)
    RelativeLayout activityDetailPlayer;

S
1.3.6  
shuyu 已提交
41
    private boolean isPlay;
S
shuyu 已提交
42
    private boolean isPause;
S
shuyu 已提交
43 44 45 46 47 48 49 50 51

    private OrientationUtils orientationUtils;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail_player);
        ButterKnife.bind(this);

S
shuyu 已提交
52
        String url = "http://baobab.wdjcdn.com/14564977406580.mp4";
S
shuyu 已提交
53
        //String url = "https://res.exexm.com/cw_145225549855002";
S
shuyu 已提交
54
        detailPlayer.setUp(url, true, null, "测试视频");
S
shuyu 已提交
55 56 57 58 59 60 61 62 63

        //增加封面
        ImageView imageView = new ImageView(this);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setImageResource(R.mipmap.xxx1);
        detailPlayer.setThumbImageView(imageView);

        resolveNormalVideoUI();

64
        //外部辅助的旋转,帮助全屏
S
shuyu 已提交
65
        orientationUtils = new OrientationUtils(this, detailPlayer);
S
1.3.6  
shuyu 已提交
66
        //初始化不打开外部的旋转
S
shuyu 已提交
67 68
        orientationUtils.setEnable(false);

S
1.1.4  
shuyu 已提交
69
        detailPlayer.setIsTouchWiget(true);
70 71
        //关闭自动旋转
        detailPlayer.setRotateViewAuto(false);
S
1.3.6  
shuyu 已提交
72
        detailPlayer.setLockLand(false);
S
1.3.2  
shuyu 已提交
73
        detailPlayer.setShowFullAnimation(false);
74
        detailPlayer.setNeedLockFull(true);
S
shuyu 已提交
75
        //detailPlayer.setOpenPreView(true);
S
shuyu 已提交
76 77 78
        detailPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
S
1.3.6  
shuyu 已提交
79 80 81
                //直接横屏
                orientationUtils.resolveByClick();

S
1.3.2  
shuyu 已提交
82 83
                //第一个true是否需要隐藏actionbar,第二个true是否需要隐藏statusbar
                detailPlayer.startWindowFullscreen(DetailPlayer.this, true, true);
S
shuyu 已提交
84 85 86
            }
        });

S
1.3.6  
shuyu 已提交
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
        detailPlayer.setStandardVideoAllCallBack(new SampleListener() {
            @Override
            public void onPrepared(String url, Object... objects) {
                super.onPrepared(url, objects);
                //开始播放了才能旋转和全屏
                orientationUtils.setEnable(true);
                isPlay = true;
            }

            @Override
            public void onAutoComplete(String url, Object... objects) {
                super.onAutoComplete(url, objects);
            }

            @Override
            public void onClickStartError(String url, Object... objects) {
                super.onClickStartError(url, objects);
            }
S
shuyu 已提交
105 106 107 108 109 110 111 112

            @Override
            public void onQuitFullscreen(String url, Object... objects) {
                super.onQuitFullscreen(url, objects);
                if (orientationUtils != null) {
                    orientationUtils.backToProtVideo();
                }
            }
S
1.3.6  
shuyu 已提交
113 114
        });

115 116 117 118
        detailPlayer.setLockClickListener(new LockClickListener() {
            @Override
            public void onClick(View view, boolean lock) {
                if (orientationUtils != null) {
S
shuyu 已提交
119
                    //配合下方的onConfigurationChanged
120 121 122 123
                    orientationUtils.setEnable(!lock);
                }
            }
        });
124

S
shuyu 已提交
125 126 127 128
    }

    @Override
    public void onBackPressed() {
129 130 131 132 133

        if (orientationUtils != null) {
            orientationUtils.backToProtVideo();
        }

S
1.3.3  
shuyu 已提交
134
        if (StandardGSYVideoPlayer.backFromWindowFull(this)) {
S
shuyu 已提交
135 136 137 138 139
            return;
        }
        super.onBackPressed();
    }

S
shuyu 已提交
140 141 142 143 144 145 146 147 148 149 150 151 152

    @Override
    protected void onPause() {
        super.onPause();
        isPause = true;
    }

    @Override
    protected void onResume() {
        super.onResume();
        isPause = false;
    }

S
shuyu 已提交
153 154 155 156
    @Override
    protected void onDestroy() {
        super.onDestroy();
        GSYVideoPlayer.releaseAllVideos();
S
shuyu 已提交
157
        GSYPreViewManager.instance().releaseMediaPlayer();
S
1.3.3  
shuyu 已提交
158 159
        if (orientationUtils != null)
            orientationUtils.releaseListener();
S
shuyu 已提交
160 161
    }

S
1.3.6  
shuyu 已提交
162 163 164 165
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        //如果旋转了就全屏
S
shuyu 已提交
166
        if (isPlay && !isPause) {
S
1.3.6  
shuyu 已提交
167 168 169 170 171 172 173 174 175
            if (newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_USER) {
                if (!detailPlayer.isIfCurrentIsFullscreen()) {
                    detailPlayer.startWindowFullscreen(DetailPlayer.this, true, true);
                }
            } else {
                //新版本isIfCurrentIsFullscreen的标志位内部提前设置了,所以不会和手动点击冲突
                if (detailPlayer.isIfCurrentIsFullscreen()) {
                    StandardGSYVideoPlayer.backFromWindowFull(this);
                }
176 177 178
                if (orientationUtils != null) {
                    orientationUtils.setEnable(true);
                }
S
1.3.6  
shuyu 已提交
179 180 181 182
            }
        }
    }

S
shuyu 已提交
183 184 185 186 187 188 189 190 191

    private void resolveNormalVideoUI() {
        //增加title
        detailPlayer.getTitleTextView().setVisibility(View.GONE);
        detailPlayer.getTitleTextView().setText("测试视频");
        detailPlayer.getBackButton().setVisibility(View.GONE);
    }

}