Android多媒体之VideoView视频播放器
程序员文章站
2023-12-20 18:42:22
本文实例为大家分享了视频播放器的两种方式,供大家参考,具体内容如下
1)、surfaceview
在布局文件中
本文实例为大家分享了视频播放器的两种方式,供大家参考,具体内容如下
1)、surfaceview
在布局文件中
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_media_play" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.zking.android_contentresolve.mediaplayactivity"> <surfaceview android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/sv_media_surface" /> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <seekbar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/seekbar" android:layout_weight="1" /> <imagebutton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onclick="isplayorpause" /> </linearlayout> </linearlayout>
在activity里面和播放内存卡上音乐的代码差不多,只是视频多了个显示内容,关键代码就是这三条
//播放内存上的视频 mediaplayer.setdatasource(this, uri.parse("file://mnt/sdcard/movies/sister.mp4")); //准备(内存卡) mediaplayer.prepare(); //将媒体播放器捕捉的画面展示在surfaceview 上 mediaplayer.setdisplay(sv_media_surface.getholder());
但是没看前面博客的筒子可能会觉得看不懂,所以还是把完整的代码粘贴出来
public class mediaplayactivity extends appcompatactivity { private seekbar seekbar; private mediaplayer mediaplayer; private surfaceview sv_media_surface; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_media_play); seekbar = (seekbar) findviewbyid(r.id.seekbar); sv_media_surface = (surfaceview) findviewbyid(r.id.sv_media_surface); seekbar.setonseekbarchangelistener(new seekbar.onseekbarchangelistener() { @override public void onprogresschanged(seekbar seekbar, int progress, boolean fromuser) { } @override public void onstarttrackingtouch(seekbar seekbar) { } @override public void onstoptrackingtouch(seekbar seekbar) { //获取拖动结束后的位置 int progress=seekbar.getprogress(); //跳转到某个位置播放 mediaplayer.seekto(progress); } }); } public void isplayorpause(view view){ final imagebutton imagebutton= (imagebutton) view; if(mediaplayer==null){//代表第一次播放音乐 //播放内存卡内的音频 mediaplayer=new mediaplayer(); //设置类型 mediaplayer.setaudiostreamtype(audiomanager.stream_music); //设置音源 try { //播放内存上的视频 mediaplayer.setdatasource(this, uri.parse("file://mnt/sdcard/movies/sister.mp4")); //准备(内存卡) mediaplayer.prepare(); //将媒体播放器捕捉的画面展示在surfaceview 上 mediaplayer.setdisplay(sv_media_surface.getholder()); //必须在播放前加载音频文件(异步准备) // mediaplayer.prepareasync(); } catch (ioexception e) { e.printstacktrace(); } mediaplayer.start(); //把图标改成暂停的图标(这里的暂停图标就是播放时的状态) imagebutton.setimageresource(android.r.drawable.ic_media_pause); //获取音乐的总时长 int duration=mediaplayer.getduration(); //设置进度条的最大值为音乐的总时长 seekbar.setmax(duration); new mythread(); }else if(mediaplayer.isplaying()){//正在播放音乐 mediaplayer.pause(); //把图标改成播放的图标(暂停状态) imagebutton.setimageresource(android.r.drawable.ic_media_play); }else{ mediaplayer.start(); imagebutton.setimageresource(android.r.drawable.ic_media_pause); } } class mythread extends thread{ @override public void run() { super.run(); while(seekbar.getprogress()<seekbar.getmax()){ //获取当前音乐播放的位置 int currentposition=mediaplayer.getcurrentposition(); //让进度条跟着时间走 seekbar.setprogress(currentposition); } } } }
2)、videoview,如果在项目中,仅仅只是播放视频的话,这种方式会比较简单,但是如果是要做视频播放器的话,还是使用第一种方法
布局文件
<videoview android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/vv_main_vedio" />
activity
public class vedioactivity extends appcompatactivity { private videoview vv_main_vedio; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_vedio); vv_main_vedio = (videoview) findviewbyid(r.id.vv_main_vedio); //给videoview设置播放来源 vv_main_vedio.setvideopath("file://mnt/sdcard/movies/sister.mp4"); //实例化媒体控制器 mediacontroller mediacontroller=new mediacontroller(this); //给activity_vedio设置控制器 vv_main_vedio.setmediacontroller(mediacontroller); mediacontroller.setmediaplayer(vv_main_vedio); } }
videoview通过与mediacontroller类结合使用,开发者可以不用自己控制播放与暂停。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
android多媒体类VideoView使用方法详解
-
Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理实现
-
Android实现多媒体之播放音乐
-
Android多媒体之VideoView视频播放器
-
android多媒体音乐(MediaPlayer)播放器制作代码
-
android多媒体类VideoView使用方法详解
-
Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理实现
-
android视频播放简单实现示例(VideoView&MediaPlayer)
-
Android编程视频播放API之MediaPlayer用法示例
-
android多媒体音乐(MediaPlayer)播放器制作代码