本文主要给大家介绍的是关于Android播放视频的四种方法,分享出来供大家参考学习,下面来一起看看详细的介绍:

一、通过intent的方式,调用系统自带的播放器
Uri uri = Uri.parse("/storage/emulated/0/DCIM/Camera/20170521_200117.mp4");
//调用系统自带的播放器
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4");
startActivity(intent);
二、使用VideoView
布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_video_play_by_vv" android:layout_width="match_parent" android:layout_height="match_parent"> <VideoView android:id="@+id/video_view" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout>
Activity
public class VideoPlayByVVActivity extends AppCompatActivity {
private VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉 title
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //设置全屏
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); //设置屏幕常亮
setContentView(R.layout.activity_video_play_by_vv);
mVideoView = (VideoView) findViewById(R.id.video_view);
init();
}
private void init() {
String path = "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4";
Uri uri = Uri.parse(path);
mVideoView.setVideoPath(path);
mVideoView.start();
mVideoView.requestFocus();
}
}
三、MediaPlayer + SurfaceView
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_video_play_by_sur" android:layout_width="match_parent" android:layout_height="match_parent"> <SurfaceView android:id="@+id/surface_view" android:layout_width="180dp" android:layout_height="wrap_content"/> <LinearLayout android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="40dp"> <Button android:id="@+id/stop" android:text="stop" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent"/> <Button android:id="@+id/play" android:text="play" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent"/> <Button android:id="@+id/pasue" android:text="pasue" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent"/> </LinearLayout> </RelativeLayout>
Activity
public class VideoPlayBySurActivity extends AppCompatActivity implements View.OnClickListener {
private SurfaceView mSurfaceView;
private MediaPlayer mMediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_play_by_sur);
mSurfaceView = (SurfaceView) findViewById(R.id.surface_view);
findViewById(R.id.stop).setOnClickListener(this);
findViewById(R.id.pasue).setOnClickListener(this);
findViewById(R.id.play).setOnClickListener(this);
init();
}
private void init() {
mMediaPlayer = new MediaPlayer();
mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
play();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.stop:
stop();
break;
case R.id.play:
if(!mMediaPlayer.isPlaying()){
play();
}
break;
case R.id.pasue:
pasue();
break;
}
}
public void stop(){
if(mMediaPlayer.isPlaying()){
mMediaPlayer.stop();
}
}
public void pasue(){
if(mMediaPlayer.isPlaying()){
mMediaPlayer.pause();
}else{
mMediaPlayer.start();
}
}
public void play(){
String path = "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4";
try {
mMediaPlayer.reset();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置需要播放的视频
mMediaPlayer.setDataSource(this, Uri.parse(path));
//把视频画面输出到SurfaceView
mMediaPlayer.setDisplay(mSurfaceView.getHolder());
mMediaPlayer.prepare();
mMediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
四、 MediaPlayer + TextureView
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_video_play_by_textrue_view" android:layout_width="match_parent" android:layout_height="match_parent"> <TextureView android:id="@+id/texture_view" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <ImageView android:id="@+id/video_image" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/all_darkbackground"/> </RelativeLayout>
Activity
public class VideoPlayByTextrueViewActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener, MediaPlayer.OnInfoListener, MediaPlayer.OnBufferingUpdateListener {
private TextureView mTextureView;
private ImageView mImageVideo;
private Surface mSurface;
private MediaPlayer mMediaPlayer;
private static String path = "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_play_by_textrue_view);
mTextureView = (TextureView) findViewById(R.id.texture_view);
mImageVideo = (ImageView) findViewById(R.id.video_image);
init();
}
private void init() {
mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
mSurface = new Surface(surfaceTexture);
Log.e("tag", "---- onSurfaceTextureAvailable");
play();
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
Log.e("tag", "---- onSurfaceTextureSizeChanged");
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
mTextureView=null;
mSurface=null;
mMediaPlayer.stop();
mMediaPlayer.release();
return false;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
});
}
public void play(){
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(getApplicationContext(), Uri.parse(path));
mMediaPlayer.setSurface(mSurface);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnInfoListener(this);
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onPrepared(MediaPlayer mp) {
mImageVideo.setVisibility(View.GONE);
mMediaPlayer.start();
}
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
return false;
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
}
}
参考文章
Android中SurfaceView的使用详解
Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView
Android TextureView简易教程
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# android
# 播放网络视频
# 视频在线播放
# android开发视频教程
# android使用surfaceview+MediaPlayer播放视频
# Android ViewPager中显示图片与播放视频的填坑记录
# Android中使用TextureView播放视频
# Android编程实现播放视频时切换全屏并隐藏状态栏的方法
# Android仿搜狐视频、微视等列表播放视频功能
# Android编程实现播放视频的方法示例
# Android 播放视频常见问题小结
# Android DragVideo实现播放视频时任意拖拽的方法
# Android仿新浪微博/QQ空间滑动自动播放视频功能
# android surfaceView实现播放视频功能
# 播放器
# 的是
# 系统自带
# 给大家
# 这篇文章
# 四种
# 谢谢大家
# 全屏
# 有疑问
# void
# onCreate
# mVideoView
# Override
# protected
# requestWindowFeature
# Window
# super
# Bundle
# savedInstanceState
# private
相关文章:
广东专业制作网站有哪些,广东省能源集团有限公司官网?
Python多线程使用规范_线程安全解析【教程】
建站10G流量真的够用吗?如何应对访问高峰?
魔方云NAT建站如何实现端口转发?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
建站之星ASP如何实现CMS高效搭建与安全管理?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
如何快速查询域名建站关键信息?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
如何选择CMS系统实现快速建站与SEO优化?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何在服务器上三步完成建站并提升流量?
微信小程序 input输入框控件详解及实例(多种示例)
如何在阿里云购买域名并搭建网站?
已有域名能否直接搭建网站?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何在阿里云虚拟服务器快速搭建网站?
如何快速配置高效服务器建站软件?
建站三合一如何选?哪家性价比更高?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
,有什么在线背英语单词效率比较高的网站?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站主机与服务器功能差异如何区分?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
建站主机与虚拟主机有何区别?如何选择最优方案?
宝塔建站助手安装配置与建站模板使用全流程解析
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何通过VPS搭建网站快速盈利?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
建站之星图片链接生成指南:自助建站与智能设计教程
网站微信制作软件,如何制作微信链接?
javascript基本数据类型及类型检测常用方法小结
如何在云虚拟主机上快速搭建个人网站?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
大同网页,大同瑞慈医院官网?
如何通过商城自助建站源码实现零基础高效建站?
广州美橙建站如何快速搭建多端合一网站?
如何做静态网页,sublimetext3.0制作静态网页?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
郑州企业网站制作公司,郑州招聘网站有哪些?
网站制作服务平台,有什么网站可以发布本地服务信息?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
如何在局域网内绑定自建网站域名?
如何基于云服务器快速搭建个人网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。