2018-05-23安卓雙擊播放與停止視頻

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">

    <SurfaceView
        android:id="@+id/surfaceView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>
package com.example.lybly.myapplication;


import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceView;
import android.view.View;
import android.widget.TextView;

import org.videolan.libvlc.IVLCVout;
import org.videolan.libvlc.LibVLC;
import org.videolan.libvlc.Media;
import org.videolan.libvlc.MediaPlayer;


public class MainActivity extends AppCompatActivity {

    private IVLCVout vlcVout;
    private MediaPlayer mediaPlayer;

    private SurfaceView surfaceView;
    private long totalTime = 0;
    private IVLCVout.Callback callback;
    private MediaPlayer.EventListener eventListener = new MediaPlayer.EventListener() {
        @Override
        public void onEvent(MediaPlayer.Event event) {
            try {
                if (event.getTimeChanged() == 0 || totalTime == 0 || event.getTimeChanged() > totalTime) {
                    return;
                }
//可以用來刷新播放進度條
//播放結(jié)束
                if (mediaPlayer.getPlayerState() == Media.State.Ended) {
                    mediaPlayer.setTime(0);
                    mediaPlayer.stop();
                    mediaPlayer.pause();
                }
            } catch (Exception e) {
                Log.d("vlc-event", e.toString());
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        surfaceView = findViewById(R.id.surfaceView);

        LibVLC libvlc = LibVLCUtil.getLibVLC(null);

        mediaPlayer = new MediaPlayer(libvlc);
        vlcVout = mediaPlayer.getVLCVout();

//視頻信息刹悴,設(shè)置視頻播放器窗口
        callback = new IVLCVout.Callback() {
            @Override
            public void onNewLayout(IVLCVout ivlcVout, int i, int i1, int i2, int i3, int i4, int i5) {
                try {
//獲取播放時長春畔,長寬
                    totalTime = mediaPlayer.getLength();
//                    videoWidth = i;
//                    videoHight = i1;


                } catch (Exception e) {
                    Log.d("vlc-newlayout", e.toString());
                }
            }

            @Override
            public void onSurfacesCreated(IVLCVout ivlcVout) {

            }

            @Override
            public void onSurfacesDestroyed(IVLCVout ivlcVout) {

            }
        };
        vlcVout.addCallback(callback);
        vlcVout.setVideoView(surfaceView);
        vlcVout.attachViews();

        Media media;
//遠程播放還是本地播放
        media = new Media(libvlc, "/sdcard/a.flv");
        mediaPlayer.setMedia(media);


//播放中的監(jiān)聽器约谈,播放時候不同時間的監(jiān)聽器
        mediaPlayer.setEventListener(eventListener);

        surfaceView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                long secondTime=System.currentTimeMillis();

                if (mediaPlayer.isPlaying()) {

                    if((secondTime-firstStopTime)<2000){
                        mediaPlayer.pause();
                        firstPlayTime=0;
                    }else {
                        firstStopTime=secondTime;
                    }
                } else {
                    if((secondTime-firstPlayTime)<2000){
                        mediaPlayer.play();
                        firstPlayTime=0;
                    }else {
                        firstPlayTime=secondTime;
                    }
                }
            }
        });

        mediaPlayer.play();

    }
    //記錄用戶首次點擊返回鍵的時間
    private long firstPlayTime=0;
    private long firstStopTime=0;
    private void pausePlay() {
        if (mediaPlayer.isPlaying()) {
            mediaPlayer.pause();
        }

        vlcVout.detachViews();
        vlcVout.removeCallback(callback);
        mediaPlayer.setEventListener(null);
    }

    private void resumePlay() {
        vlcVout.setVideoView(surfaceView);
        vlcVout.attachViews();

        vlcVout.addCallback(callback);
        mediaPlayer.setEventListener(eventListener);
    }

    @Override
    protected void onDestroy() {
        try {
            super.onDestroy();

            pausePlay();
            mediaPlayer.release();
        } catch (Exception e) {
            Log.d("vlc-destroy", e.toString());
        }
    }

    @Override
    protected void onStop() {
        try {
            super.onStop();
            pausePlay();

        } catch (Exception e) {
            Log.d("vlc-stop", e.toString());
        }
    }

    @Override
    protected void onPause() {
        try {
            super.onPause();
            pausePlay();

        } catch (Exception e) {
            Log.d("vlc-pause", e.toString());
        }
    }

    @Override
    protected void onResume() {
        try {
            super.onResume();
            resumePlay();

        } catch (Exception e) {
            Log.d("vlc-resume", e.toString());
        }
    }

    @Override
    protected void onNewIntent(Intent intent) {
        try {
            super.onNewIntent(intent);
        } catch (Exception e) {
            Log.d("vlc-newintent", e.toString());
        }
    }

    @Override
    public void onBackPressed() {
        try {
            super.onBackPressed();

            finish();
        } catch (Exception e) {
            Log.d("vlc-back", e.toString());
        }
    }
}

package com.example.lybly.myapplication;

import org.videolan.libvlc.LibVLC;

import java.util.ArrayList;

/**
 * LibVLCUtil LibVLC 單例
 */
public class LibVLCUtil {
    private static LibVLC libVLC = null;

    public synchronized static LibVLC getLibVLC(ArrayList<String> options) throws IllegalStateException {
        if (libVLC == null) {
            if (options == null) {
                libVLC = new LibVLC();
            } else {
                libVLC = new LibVLC(options);
            }
        }
        return libVLC;
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扒吁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子隶垮,更是在濱河造成了極大的恐慌藻雪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狸吞,死亡現(xiàn)場離奇詭異勉耀,居然都是意外死亡,警方通過查閱死者的電腦和手機蹋偏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門便斥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人威始,你說我怎么就攤上這事枢纠。” “怎么了黎棠?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵晋渺,是天一觀的道長镰绎。 經(jīng)常有香客問我,道長木西,這世上最難降的妖魔是什么畴栖? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮八千,結(jié)果婚禮上驶臊,老公的妹妹穿的比我還像新娘。我一直安慰自己叼丑,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布扛门。 她就那樣靜靜地躺著鸠信,像睡著了一般。 火紅的嫁衣襯著肌膚如雪论寨。 梳的紋絲不亂的頭發(fā)上星立,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音葬凳,去河邊找鬼绰垂。 笑死,一個胖子當著我的面吹牛火焰,可吹牛的內(nèi)容都是我干的劲装。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昌简,長吁一口氣:“原來是場噩夢啊……” “哼占业!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纯赎,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谦疾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后犬金,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體念恍,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年晚顷,在試婚紗的時候發(fā)現(xiàn)自己被綠了峰伙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡音同,死狀恐怖词爬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情权均,我是刑警寧澤顿膨,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布锅锨,位于F島的核電站,受9級特大地震影響恋沃,放射性物質(zhì)發(fā)生泄漏必搞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一囊咏、第九天 我趴在偏房一處隱蔽的房頂上張望恕洲。 院中可真熱鬧,春花似錦梅割、人聲如沸霜第。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泌类。三九已至,卻和暖如春底燎,著一層夾襖步出監(jiān)牢的瞬間刃榨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工双仍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留枢希,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓朱沃,卻偏偏與公主長得像苞轿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子逗物,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容