广告
返回顶部
首页 > 资讯 > 移动开发 >Android多媒体之VideoView视频播放器
  • 335
分享到

Android多媒体之VideoView视频播放器

videoviewAndroid 2022-06-06 04:06:29 335人浏览 八月长安
摘要

本文实例为大家分享了视频播放器的两种方式,供大家参考,具体内容如下 1)、SurfaceView 在布局文件中 <?xml version="1.0" e

本文实例为大家分享了视频播放器的两种方式,供大家参考,具体内容如下

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 App中使用VideoView来实现视频播放的方法Android自定义播放器控件VideoViewandroid使用videoview播放视频android视频播放简单实现示例(VideoView&MediaPlayer)Android编程实现VideoView循环播放功能的方法android之视频播放系统VideoView和自定义VideoView控件的应用Android 使用VideoView播放MP4的简单实现Android使用VideoView出现无法播放此视频问题的解决方法


--结束END--

本文标题: Android多媒体之VideoView视频播放器

本文链接: https://www.lsjlt.com/news/22312.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作