您的位置:首页 > 其它

安卓VideoView使用

2015-11-26 12:28 351 查看
1.简单的使用

String url = "http://download1.vlook.cn/ef82583f7a4e6467b408db72fd521d8d/56566f43/video/vga/cJME.mp4";

        mViewView.setVideoURI(Uri.parse(url));

        mViewView.setMediaController(new MediaController(this));

        mViewView.start();

2.自定义进度

package qianfeng.day07_videoview;

import android.media.MediaPlayer;

import android.net.Uri;

import android.os.Bundle;

import android.os.Handler;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.view.DragEvent;

import android.view.View;

import android.widget.LinearLayout;

import android.widget.SeekBar;

import android.widget.TextView;

import android.widget.VideoView;

import java.text.SimpleDateFormat;

/**

 * Created by keven on 15/11/26.

 */

public class MainActivity2 extends AppCompatActivity{

    private static final String TAG = "MainActivity2";

    private static final int SPACE = 10;

    private SeekBar mSeek;

    private VideoView mVideo;

    private LinearLayout mOperation;

    private TextView mTimeTv;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main2);

        mSeek = (SeekBar) findViewById(R.id.progress);

        mVideo = (VideoView) findViewById(R.id.video);

        mOperation = (LinearLayout) findViewById(R.id.operation);

        mTimeTv = (TextView) findViewById(R.id.time_tv);

        //设置所有的监听

        setAllClick();

        String url = "http://service.vlook.cn:8080/down/servlet/VideoPlay?vid=cHuV&client=pc&imei=c93af537e63f42932e0b41b24ed6fe31&n=xx.mp4";

        mVideo.setVideoURI(Uri.parse(url));

        mVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override

            public void onPrepared(MediaPlayer mp) {

                Log.i(TAG,"当前视频已准备就绪");

                handler.post(runnable);

                mVideo.start();     //播放视频

            }

        });

    }

    Handler handler = new Handler();

    boolean isTouch = false;

    Runnable runnable = new Runnable() {

        @Override

        public void run() {

            //获取总长

            int duration = mVideo.getDuration();

            //获取当前位置

            int currentPosition = mVideo.getCurrentPosition();

            //设置一个时间显示

            mTimeTv.setText(formatTtime(currentPosition) + " / " + formatTtime(duration));

            //获取缓冲百分比

            int bufferPercentage = mVideo.getBufferPercentage();

            //设置最大长度

            mSeek.setMax(duration);

            //设置缓冲多少

            if(bufferPercentage==100){

                mSeek.setSecondaryProgress(duration);

            }else{

                mSeek.setSecondaryProgress((duration/100*bufferPercentage));

            }

            if(!isTouch){

                //设置当前位置

                mSeek.setProgress(currentPosition);

            }

            //递归

            handler.postDelayed(runnable,1000);

        }

    };

    String formatTtime(long time){

        SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");

        String timeStr = sdf.format(time);

        return timeStr;

    }

    private void setAllClick() {

        mOperation.getChildAt(0).setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                play();

            }

        });

        mOperation.getChildAt(1).setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                pause();

            }

        });

        mOperation.getChildAt(2).setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                forward();

            }

        });

        mOperation.getChildAt(3).setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                backward();

            }

        });

        mSeek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override

            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
9ccd
{

            }

            @Override

            public void onStartTrackingTouch(SeekBar seekBar) {

                isTouch = true;

            }

            @Override

            public void onStopTrackingTouch(SeekBar seekBar) {

                isTouch = false;

                mVideo.seekTo(seekBar.getProgress());

            }

        });

    }

    private void backward() {

        //获取视频总长

        //获取当前播放的位置 ,并且追加 前进的时间

        int currentPosition = mVideo.getCurrentPosition()-SPACE;

        if(currentPosition<0){

            mVideo.seekTo(0);

        }else{

            mVideo.seekTo(currentPosition);

        }

    }

    private void forward() {

        //获取视频总长

        int duration = mVideo.getDuration();

        //获取当前播放的位置 ,并且追加 前进的时间

        int currentPosition = mVideo.getCurrentPosition()+SPACE;

        if(currentPosition<duration){

            mVideo.seekTo(currentPosition);

        }else{

            mVideo.seekTo(duration);

        }

    }

    private void pause() {

        mVideo.pause();

    }

    private void play() {

        mVideo.start();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: