buchuqi / ZJExoPlayer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ZJExoPlayer

功能(整个视频播放器集成2M左右):

  • 支持锁屏
  • 支持试看功能
  • 支持StatusBar状态类
  • 支持自适应横竖屏切换
  • 支持声音、亮度、进度手势操作
  • 支持广告播放,然后播放视频内容
  • 支持多种播放格式支持HTTP直播了(HLS),MP4,MP3,WebM,M4A,MPEG-TS 和 AAC(基于exoplayer)

Xml里配置


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <vodjk.com.exoplayerlib.widget.ExoPlayerView
        android:id="@+id/exo_play_context_id"
        android:layout_width="match_parent"
        android:layout_height="@dimen/y405"  <!--控件的高度-->
        android:background="@android:color/transparent"
        exo:controller_layout_id="@layout/simple_exo_playback_control_view"
        exo:exoplayer_height="@dimen/y405"   <!--视频默认高度-->
        exo:fastforward_increment="0"
        exo:paddingEnd="0dp"
        exo:paddingStart="0dp"
        exo:player_layout_id="@layout/simple_exo_view"
        exo:resize_mode="fit"
        exo:rewind_increment="0"
        exo:seekbar_allwayshow="true"         <!--进度条一直显示,false的话如果是直播流不显示-->
        exo:show_timeout="3000"               <!--点击显示时长-->
        exo:support_lock_screen="true"        <!--是否支持锁屏-->
        exo:support_switch_resolution="false" <!--是否支持清晰度切换-->
        exo:surface_type="surface_view"
        exo:topbar_transparent="true"         <!--顶部状态栏是否顶满-->
        exo:use_artwork="true"                <!--是否使用加载默认图-->
        exo:use_controller="true" />

    <LinearLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        ......

    </LinearLayout>


</LinearLayout>

 

Activity里的配置

  @Override
    protected void onCreate(Bundle savedInstanceState) {
    exoPlayerView = (ExoPlayerView) findViewById(R.id.exo_play_context_id);
    exoPlayerView.initPlayer(videoType == null ? ExoPlayerType.Standard : videoType)
                .setPlayUri(videoInfo.url)
                .loadArtWork(videoInfo.cover)
                .isAutoLandScreen(true)//是否自动应旋转屏幕
                .isLockScreen(true)    //是否支持锁屏
                .seekToPosition(videoInfo.current) //默认播放起始位置
                ..setonPlayerStateListener(new PlayerStateToView() {

                    @Override
                    public void onPlayStart() {

                    }

                    @Override
                    public void onLoadingChanged() {

                    }

                    @Override
                    public void onPlayerError(ExoPlaybackException e) {

                    }

                    @Override
                    public void onPlayEnd() {

                    }

                    @Override
                    public void onBack() {

                    }

                    @Override
                    public void onVisibilityChange(int visible, boolean isAllWayShowTop) {

                    }

                    @Override
                    public void onBuyVideo() {

                    }
                });
                
                }
                
                
    @Override
    public void onResume() {
        super.onResume();
        exoPlayerView.onResume();
    }

    @Override
    public void onPause() {
        super.onPause();
        if (exoPlayerView == null) {
            return;
        }
        exoPlayerView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        exoPlayerView.onDestroy();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        //横竖屏切换,content为视频布局之外的布局为了全屏使用
        exoPlayerView.onConfigurationChanged(newConfig, content);
        super.onConfigurationChanged(newConfig);
    }

    @Override
    public void onBackPressed() {
        //使用播放返回键监听
        exoPlayerView.onBackPressed();
         // TODO: 处理自己的业务逻辑
         ...
         
        finish();
        super.onBackPressed();
    }

About


Languages

Language:Java 100.0%