Android 实现视频播放的两种方式
来源:互联网 发布:反应热效应的测定数据 编辑:程序博客网 时间:2024/04/30 07:19
Android 端实现视频播放的两种方式
1、通过surfaceView+MediaPlayer 实现
2、使用VideoView+MediaController实现
一、通过surfaceView+MediaPlayer实现(多用于自定义开发播放器)
页面布局:sufaceView+SeekBar+ImageButton
<SurfaceView android:id="@+id/sfv_main_video" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="8" /> <SeekBar android:id="@+id/sb_main_video" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageButton android:id="@+id/ib_main_play" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:onClick="isPlayOrPause" android:src="@android:drawable/ic_media_play" />
java代码:
/** * play or pause * * @param view */ public void isPlayOrPause(View view) { final ImageButton ib_main_play = (ImageButton) view; // 判断MediaPlay的状态 if (mediaPlayer == null) { // 1、为空,也就是第一次 // 实例化MediaPlayer mediaPlayer = new MediaPlayer(); // 设置类型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { // 设置视频源 // 内存卡 mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Download/sister.mp4")); // 需要准备(内存卡) mediaPlayer.prepare(); // 将画面展示到surfaceView上 mediaPlayer.setDisplay(sfv_main_video.getHolder()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 准备完成监听 mediaPlayer.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { // TODO Auto-generated method stub // 播放 mediaPlayer.start(); // 改变图标 ib_main_play.setImageResource(android.R.drawable.ic_media_pause); // 获取视频总时长 int duration = mediaPlayer.getDuration(); // 设置seekBar总长 sb_main_video.setMax(duration); // 进度条 new MyThread().start(); } }); } else if (mediaPlayer.isPlaying()) { // 2、正在播放? mediaPlayer.pause(); ib_main_play.setImageResource(android.R.drawable.ic_media_play); } else { // 3、暂停 mediaPlayer.start(); ib_main_play.setImageResource(android.R.drawable.ic_media_pause); } } /** * 进度条 * * @author L * */ class MyThread extends Thread { @Override public void run() { // TODO Auto-generated method stub super.run(); // 当前长度,是否大于最大值 while (sb_main_video.getProgress() <= sb_main_video.getMax()) { // 获取当前播放进度 int current = mediaPlayer.getCurrentPosition(); sb_main_video.setProgress(current); } } }
二、使用VideoView+MediaController实现(单视频播放,类似于微博之类的小视频播放)
页面布局:VideoView
<VideoView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/vv_main_video"/>
这种方法只需要在页面上使用VideoView控件
java代码:
vv_main_video = (VideoView) findViewById(R.id.vv_main_video); //设置视频地址 vv_main_video.setVideoPath("file://mnt/sdcard/Download/sister.mp4"); //实例化一个MediaController(媒体控制器) MediaController mediaController = new MediaController(this); //添加关联 vv_main_video.setMediaController(mediaController); mediaController.setMediaPlayer(vv_main_video);
上述两种方法都能实现视频播放,一个偏向于自定义播放器,另一个让自己的app可以播放视频
在此记录,供参考
0 0
- Android 实现视频播放的两种方式
- Android视频播放的两种方式介绍
- 自学Android之播放视频的两种方式
- Android视频录制、播放的两种方式
- unity3d两种播放视频的方式
- Android三种路径的音乐播放,视频播放的两种方式
- android实现视频播放的几种方式
- Android -- 播放视频的两种形式
- Android的两种视频播放
- Android视频播放总结: 三种播放视频的方式
- 三种方式实现视频的播放
- Android播放音频的两种方式
- Android播放音频的两种方式
- Android两种播放声音的方式
- Android三种播放视频的方式
- Android三种播放视频的方式
- Android三种播放视频的方式
- Android三种播放视频的方式
- error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int"错误的解决方法
- AIX升级openssh步骤
- 455. Assign Cookies | 分配饼干
- android常用的一些UI调试命令am,pm
- 一个有趣的遭遇:dubbo超时追踪出来的httpclient超时问题
- Android 实现视频播放的两种方式
- 6人执行任务
- 剑指offer题目汇总(二)
- Bluemix结合RabbitMq实现消息发送与接收实例
- MongoDB 数组查询
- 程序员想玩转大数据:需要知晓的12种工具
- win7+vs2012下使用gtest
- Javascript中回调函数的使用
- CAS单点登录3--服务端登录页个性化