videoView播放视频,简易视频播放器自己写

xiaoxiao2021-02-28  193

公司需要,需要播放本地自己录制的视频,所以对格式没有要求,也不需要访问网络视频,就写了一个简易的视频播放器。

超级简单,主要分三部分。

第一,activity,URL自己改了就行:

/** * 2017/5/5 9:00 * Created by jiangchen * 作用:视频播放activity */ public class VideoPlayActivity extends Activity implements View.OnClickListener { private VideoView videoPlayer; //视频播放控件 private ImageView backBtn; //退出 private ImageView playBtn; //播放暂停 private ProgressBar progressPb; //进度条 private int currentProgress = 0; //当前播放进度 private boolean ifrunThread = true; //线程开关,关了就无法开了 private boolean ifRunTimer = true; //线程内方法开关,可关可开 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //去掉标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉状态栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_video_play); initView(); //设置视频源路径 videoPlayer.setVideoPath(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "VisitInsData" + File.separator + BaseApplication.currentPath + File.separator + "video.mp4"); //判断视频是否存在 if (new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "VisitInsData" + File.separator + BaseApplication.currentPath + File.separator + "video.mp4").exists()) { //存在则播放 videoPlayer.requestFocus(); videoPlayer.start(); //启动计时器 initTimerThread(); } else { //不存在则给出提示并退出 Toast.makeText(this, "视频未录制", Toast.LENGTH_SHORT).show(); finish(); } //监听视频播放完成 videoPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { //可能读条差一点点未读满,给他补齐 ifRunTimer=false; playBtn.setImageResource(R.drawable.video_play); progressPb.setProgress(100); } }); } private void initTimerThread() { new Thread() { @Override public void run() { super.run(); while (ifrunThread) { if (ifRunTimer) { progressPb.setProgress((videoPlayer.getCurrentPosition() * 100) / videoPlayer.getDuration()); } try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); } /** * 2017/5/5 8:50 * Created by jiangchen * 作用:初始化控件,监听事件 */ private void initView() { videoPlayer = (VideoView) findViewById(R.id.video_player); backBtn = (ImageView) findViewById(R.id.back_btn); playBtn = (ImageView) findViewById(R.id.play_btn); progressPb = (ProgressBar) findViewById(R.id.progress_pb); progressPb.setMax(100); backBtn.setOnClickListener(this); playBtn.setOnClickListener(this); } @Override protected void onResume() { super.onResume(); stopPlayVideo(); } @Override protected void onStop() { super.onStop(); if (videoPlayer.isPlaying()) { stopPlayVideo(); } } @Override protected void onDestroy() { super.onDestroy(); ifrunThread = false; } /** * 2017/5/5 8:51 * Created by jiangchen * 作用:暂停视频 */ private void stopPlayVideo() { videoPlayer.pause(); playBtn.setImageResource(R.drawable.video_play); currentProgress = videoPlayer.getCurrentPosition(); ifRunTimer = false; } /** * 2017/5/5 8:51 * Created by jiangchen * 作用:按照原来暂停时进度播放视频 */ private void restartPlayVideo() { videoPlayer.start(); videoPlayer.seekTo(currentProgress); playBtn.setImageResource(R.drawable.video_pause); currentProgress = 0; ifRunTimer = true; } @Override public void onClick(View v) { switch (v.getId()) { //返回 case R.id.back_btn: finish(); break; //播放,暂停 case R.id.play_btn: if (videoPlayer.isPlaying()) { stopPlayVideo(); } else { restartPlayVideo(); } break; } } } 第二部分,布局,需要自己改掉小图标:

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000"> <VideoView android:id="@+id/video_player" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center_horizontal" /> <ImageView android:id="@+id/back_btn" android:layout_width="30dp" android:layout_height="30dp" android:layout_margin="10dp" android:src="@mipmap/return_video" /> <ImageView android:id="@+id/play_btn" android:layout_width="40dp" android:layout_height="40dp" android:layout_gravity="bottom" android:layout_margin="10dp" android:src="@drawable/video_play" /> <ProgressBar android:id="@+id/progress_pb" style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginBottom="20dp" android:layout_marginLeft="60dp" android:layout_marginRight="60dp" android:scrollbarStyle="insideInset" /> </FrameLayout> 第三部分,manifest,注册,锁死横屏:

<activity android:name=".visitinspection.VideoPlayActivity" android:configChanges="layoutDirection|screenSize|screenLayout|keyboard|keyboardHidden" android:screenOrientation="landscape" /> 好啦,简单的就这样完成了,还有一些小BUG,或者说是灵异事件有待你们自己发掘,哈哈~~~

转载请注明原文地址: https://www.6miu.com/read-29644.html

最新回复(0)