播放网络视频,缓冲播放,有进度条、时间显示、横竖屏切换
来源:互联网 发布:windows phone10 编辑:程序博客网 时间:2024/04/29 00:31
最近再做视频方面的项目,包括播放网络视频的功能。
注:主要就是实现OnBufferingUpdateListener这一个监听,onBufferingUpdate中的第二个参数就是缓冲的数据,配合handler显示loading的状态。主要就是判断缓冲的和播放的进度,实现状态的提示
注:递归调用更新时间的显示
实现的功能:
1、边缓冲边播放(没有做视频的本地缓存),缓冲时会有longding的状态提示
2、可以横竖屏切换,自动全屏
3、时间同步显示
4、进度条同步更新
基本上就是一些基础的功能,就是MediaController的相关功能。这里还能优化的就是,自动隐藏顶部和底部的 控制视图,这个就是添加一个动画而已,大家自行解决吧;
我这里是写了一个播放器类,用于外部调用,我这里用的是Videoview,没什么难得知识点;
功能点实现:
1、缓冲播放、进度条同步
@Overridepublic void onPrepared(MediaPlayer player) {Log.e(TAG, "the mediaplayer id prepared.");totalTime.setText(duration2Time(player.getDuration()));//显示总视频时长player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {@Overridepublic void onBufferingUpdate(MediaPlayer player,int bufferingProgress) {try {skbProgress.setSecondaryProgress(bufferingProgress);//更新缓冲进度VideoPlyer.this.bufferingProgress = bufferingProgress;int currentProgress = skbProgress.getMax()* player.getCurrentPosition()/ player.getDuration();Log.e("onBufferingUpdate", "load:" + bufferingProgress+ "%__" + "play:" + currentProgress + "%");// 同步刷新播放进度Message msg = mHandler.obtainMessage(player.getCurrentPosition(), currentProgress,bufferingProgress);mHandler.sendMessage(msg);} catch (Exception e) {Log.e("VideoPlayer", "error msg:" + e.getMessage());}}});mVideoView.start();}
@SuppressLint("HandlerLeak")private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {if (msg.arg1 >= msg.arg2) {if (bufferingProgress == 0) {if (!creatingProgress.isShowing()) {show();if (mVideoView.isPlaying()) {dismiss();}}} else {show();}} else {dismiss();}};};
注:主要就是实现OnBufferingUpdateListener这一个监听,onBufferingUpdate中的第二个参数就是缓冲的数据,配合handler显示loading的状态。主要就是判断缓冲的和播放的进度,实现状态的提示
2、横竖屏切换
在activity的属性中添加以下内容:
android:configChanges="keyboardHidden|orientation|screenSize"
配合VideoView就可以完美解决
3、时间显示
private final Handler timeHandler = new Handler();
<span style="white-space:pre"></span>/** * 更新播放时间 * * @author Gogh */public void updatePlayTimer() {if (null != mVideoView) {int pos = mVideoView.getCurrentPosition();int min = (pos / 1000) / 60;int sec = (pos / 1000) % 60;curTime.setText(resetTime(min) + ":" + resetTime(sec));int currentProgress = skbProgress.getMax()* mVideoView.getCurrentPosition()/ mVideoView.getDuration();skbProgress.setProgress(currentProgress);Runnable notification = new Runnable() {@Overridepublic void run() {updateTimer();}};timeHandler.post(notification);}}
注:递归调用更新时间的显示
好了,主要的代码都在这了,业务逻辑可以自己实现 ,有哪里不对的还请多多指教。
0 0
- 播放网络视频,缓冲播放,有进度条、时间显示、横竖屏切换
- 视频播放如何横竖屏切换
- 视频播放如何横竖屏切换续
- Android横竖屏切换继续播放视频
- Android视频播放和横竖屏切换
- iOS视频播放横竖屏切换技巧
- 解决Android视频播放横竖屏切换播放问题!
- 视频播放以及横竖屏切换保存播放状态
- 横竖屏播放视频
- android 横竖屏切换属性和播放视频全屏切换
- android 横竖屏切换属性和播放视频全屏切换
- android 横竖屏切换属性和播放视频全屏切换
- 魅族MX5——视频播放,横竖屏切换黑屏,有声音没图像
- Android中WebView播放网上视频,横竖屏切换
- ListView 列表播放视频,支持横竖屏无缝切换
- android surfaceview自定义视频播放器横竖屏切换总结
- Android视频播放器横竖屏自动切换
- Android开发:视频播放横竖屏切换回忆笔记
- led驱动(一)
- 面试中十四个可以向主考官提出的问题
- linux系统备份(2)
- c#获取字符串中第一个子母
- hdu 5029 Relief grain
- 播放网络视频,缓冲播放,有进度条、时间显示、横竖屏切换
- 济南浪琴手表维修售后-精时恒达名表维修售后服务中心
- android风格和主题:Style and Theme
- dsdsd
- http svn 配置
- 1084. Broken Keyboard (20)
- java工程连接数据库详细步骤及遇到的问题
- 牢记:结构体的定义和经典示例
- QT 的信号与槽机制介绍