視頻播放第三方插件jiecaovideoplayer使用記錄

用于視頻播放的第三方插件线脚,效果如圖:

device-2018-01-30-142705.png

使用方法:
1.build.gradle里添加依賴
compile 'fm.jiecao:jiecaovideoplayer:4.6.3'

2.application

/**
 * @author : wangtt
 * @time : 16/9/5
 */
public class VPApplication extends Application {
    public static VPApplication instance;
    public JCVideoPlayerStandard VideoPlaying;

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }
}

3.在MainActivity里,如果項目沒有actionbar和toolbar的話要設置:

 JCVideoPlayer.ACTION_BAR_EXIST = false;
 JCVideoPlayer.TOOL_BAR_EXIST = false;

否則會出異常货裹。

@Override
    protected void onPause() {
        super.onPause();
        if(VPApplication.instance.VideoPlaying!=null)
        {
            if(VPApplication.instance.VideoPlaying.currentState== JCVideoPlayer.CURRENT_STATE_PLAYING)
            {
                VPApplication.instance.VideoPlaying.startButton.performClick();
            }else if (VPApplication.instance.VideoPlaying.currentState== JCVideoPlayer.CURRENT_STATE_PREPAREING)
            {
                JCVideoPlayer.releaseAllVideos();
            }
        }
    }

4.適配器item

  <fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
        android:id="@+id/videoplayer"
        android:layout_width="match_parent"
        android:layout_height="260dp"/>

5.視頻列表喷楣,如果有可見時播放視頻的需求,實現(xiàn)方式如下:

 videoList.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                switch (scrollState) {
                    case AbsListView.OnScrollListener.SCROLL_STATE_FLING:
                        Log.e("videoTest", "SCROLL_STATE_FLING");
                        break;
                    case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
                        Log.e("videoTest", "SCROLL_STATE_IDLE");
                        autoPlayVideo(view);//可見時播放視頻
                        break;
                    case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
                        Log.e("videoTest", "SCROLL_STATE_TOUCH_SCROLL");
                        break;
                    default:
                        break;
                }
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                                 int visibleItemCount, int totalItemCount) {
                // firstVisibleItem   當前第一個可見的item
                // visibleItemCount   當前可見的item個數(shù)
                if (firstVisible == firstVisibleItem) {
                    return;
                }
                firstVisible = firstVisibleItem;
                visibleCount = visibleItemCount;
                totalCount = totalItemCount;
            }
        });
    }

    void autoPlayVideo(AbsListView view) {
        for (int i = 0; i < visibleCount; i++) {
            if (view != null && view.getChildAt(i) != null && view.getChildAt(i).findViewById(R.id.videoplayer) != null) {
                JCVideoPlayerStandard videoPlayerStandard1 = (JCVideoPlayerStandard) view.getChildAt(i).findViewById(R.id.videoplayer);
                Rect rect = new Rect();
                videoPlayerStandard1.getLocalVisibleRect(rect);
                int videoheight3 = videoPlayerStandard1.getHeight();
                if (rect.top == 0 && rect.bottom == videoheight3) {
                    if (videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_NORMAL || videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_ERROR) {
                        videoPlayerStandard1.startButton.performClick();
                        VPApplication.instance.VideoPlaying = videoPlayerStandard1;
                    }
                    return;
                }

            }
        }
        JCVideoPlayer.releaseAllVideos();
        VPApplication.instance.VideoPlaying = null;
    }

6.適配器getView方法中

//列表滑動時门粪,及時釋放資源
 if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof VideoHolder) {
                ((VideoHolder) convertView.getTag()).jcVideoPlayer.release();
  }


  boolean setUp = viewHolder.jcVideoPlayer.setUp(
                        "http://gslb.miaopai.com/stream/ed5HCfnhovu3tyIQAiv60Q__.mp4", JCVideoPlayer.SCREEN_LAYOUT_LIST,
                        "");
 if (setUp) {     
   //設置視頻縮略圖
       Glide.with(getActivity()).load("http://a4.att.hudong.com/05/71/01300000057455120185716259013.jpg").into(viewHolder.jcVideoPlayer.thumbImageView);
      }

7.播放視頻
videoPlayer.startPlayLocic();
8.退出Activity時,要銷毀player烹困,否則會出現(xiàn)退出了還繼續(xù)播放的情況

  @Override
    public void onDestroy() {
        super.onDestroy();
        try {
            JCVideoPlayer.releaseAllVideos();
        } catch (Exception e) {
        }
    }
        

8.遇到的問題
播放視頻時玄妈,出現(xiàn)seekbar的thumb圓點被覆蓋情況或者使用其他地方使用seekbar時thumb圓點被覆蓋情況,如圖:


WX20180130-154430.png

這個問題出現(xiàn)的原因是因為manifest.xml里application節(jié)點使用了自定義的theme髓梅。
解決辦法:在使用了的seekbar的類節(jié)點里拟蜻,加上theme如下:
AndroidManifest.xml

 <activity
            android:name="com.nongji.ah.activity.VideoPlayAct"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme"></activity>

styles.xml

  <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市枯饿,隨后出現(xiàn)的幾起案子酝锅,更是在濱河造成了極大的恐慌,老刑警劉巖奢方,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搔扁,死亡現(xiàn)場離奇詭異,居然都是意外死亡蟋字,警方通過查閱死者的電腦和手機稿蹲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹊奖,“玉大人苛聘,你說我怎么就攤上這事。” “怎么了设哗?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵唱捣,是天一觀的道長。 經常有香客問我网梢,道長震缭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任澎粟,我火速辦了婚禮蛀序,結果婚禮上欢瞪,老公的妹妹穿的比我還像新娘活烙。我一直安慰自己,他們只是感情好遣鼓,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布啸盏。 她就那樣靜靜地躺著,像睡著了一般骑祟。 火紅的嫁衣襯著肌膚如雪回懦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天次企,我揣著相機與錄音怯晕,去河邊找鬼。 笑死缸棵,一個胖子當著我的面吹牛舟茶,可吹牛的內容都是我干的。 我是一名探鬼主播堵第,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吧凉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了踏志?” 一聲冷哼從身側響起阀捅,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎针余,沒想到半個月后饲鄙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡圆雁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年忍级,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摸柄。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡颤练,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情嗦玖,我是刑警寧澤患雇,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宇挫,受9級特大地震影響苛吱,放射性物質發(fā)生泄漏。R本人自食惡果不足惜器瘪,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一翠储、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧橡疼,春花似錦援所、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至历帚,卻和暖如春滔岳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挽牢。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工谱煤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人禽拔。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓刘离,卻偏偏與公主長得像,于是被迫代替她去往敵國和親奏赘。 傳聞我的和親對象是個殘疾皇子寥闪,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內容