运行有问题或需要源码请点赞关注收藏后评论区留言~~~
一、利用视频视图VideoView播放视频
通过专门的播放器固然能够播放视频,但要离开当前App跳到播放界面才行,因为视频播放不算很复杂的功能,人们更希望将视频内嵌到当前App页面,所以Android提供了名为视频视图VideoView的播放控件,该控件允许像视图那样划出一块界面展示视频,同时还支持对视频进行播放控制
常用方法说明如下
1:setVideoURI 设置视频文件的URI路径
2:setVideoPath 设置视频文件的字符串路径
3:setMediaController 设置媒体控制条的对象
4:start 开始播放视频
5:pause 暂停
6:resume 恢复播放
7:suspend 结束播放并释放资源
由于VideoView只显示播放界面,没显示控制按钮和进度条,因此实际开发中需要给它配备媒体控制条MediaController,该控制条支持基本的播放控制操作
MediaController常用方法如下
1:setMediaPlayer 设置媒体播放器的对象
2:show 显示媒体控制条
3:hide 隐藏媒体控制条
4:inShowing 判断媒体控制条是否正在显示
两者具体集成步骤为以下四步
1:由视频视图对象调用setVideoURI方法指定视频文件
2:创建一个媒体控制条
3:由控制条对象调用setMediaPlayer方法
4:调用视频视图对象的start方法 开始播放视频
效果如下
连接真机测试效果更好 模拟机不方便使用相机
代码如下
Java类
package com.example.chapter13; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.MediaController; import android.widget.VideoView; import androidx.appcompat.app.AppCompatActivity; public class VideoPlayActivity extends AppCompatActivity implements View.OnClickListener { private final static String TAG = "VideoPlayActivity"; private VideoView vv_content; // 声明一个视频视图对象 private int CHOOSE_CODE = 3; // 只在视频库挑选图片的请求码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_play); // 从布局文件中获取名叫vv_content的视频视图 vv_content = findViewById(R.id.vv_content); findViewById(R.id.btn_choose).setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId() == R.id.btn_choose) { // 创建一个内容获取动作的意图(准备跳到系统视频库) Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("video/*"); // 类型为视频 startActivityForResult(intent, CHOOSE_CODE); // 打开系统视频库 } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (resultCode == RESULT_OK && requestCode == CHOOSE_CODE) { if (intent.getData() != null) { // 从视频库回来 vv_content.setVideoURI(intent.getData()); // 设置视频视图的视频路径 MediaController mc = new MediaController(this); // 创建一个媒体控制条 vv_content.setMediaController(mc); // 给视频视图设置相关联的媒体控制条 mc.setMediaPlayer(vv_content); // 给媒体控制条设置相关联的视频视图 vv_content.start(); // 视频视图开始播放 } } } }
XML文件如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn_choose" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="打开相册播放视频" android:textColor="@color/black" android:textSize="17sp" /> <VideoView android:id="@+id/vv_content" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
创作不易 觉得有帮助请点赞关注收藏~~~