MediaPlayer的基本使用-播放音乐/视频
1.创建MediaPlayer对象
private MediaPlayer mMediaPlayer = new MediaPlayer();
2.准备
// 本地资源
File wavFile = new File(getExternalFilesDir(Environment.DIRECTORY_MUSIC), "test.wav");
if (!wavFile.exists()) return;
// 本地路径/网络路径 支持http、rtsp
mMediaPlayer.setDataSource(wavFile.getPath());
mMediaPlayer.prepare();
3.播放/暂停/停止
// 播放
mMediaPlayer.start();
// 暂停
mMediaPlayer.pause();
// 停止
mMediaPlayer.stop();
4.设置监听
// 准备监听
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {// 资源已经准备好,可以开始播放// 这里可以获取资源的总长度 单位msint duration = mp.getDuration();}
});
// 播放完成监听
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mp) {// 播放完成监听//这里可以回收资源,可以开始准备下一个资源mMediaPlayer.release();// 或者mMediaPlayer.reset();initMediaPlayer();}
});
// 播放出错
mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {@Overridepublic boolean onError(MediaPlayer mp, int what, int extra) {Log.d(TAG, "资源播放失败 ---> ");return false;}
});
// 网络资源缓冲进度,网络资源才会调用
mMediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {@Overridepublic void onBufferingUpdate(MediaPlayer mp, int percent) {Log.d(TAG, "缓冲进度 ---> " + percent + "%");}
});
5.播放进度
api是没有提供播放进度的,那怎么办?
那就创建一个任务吧!
private Timer mTimer = new Timer();
private TimerTask mTimerTask = new TimerTask() {@Overridepublic void run() {if (duration <= 0) {tvProgress.setText("播放进度:0%");return;}int progress = mMediaPlayer.getCurrentPosition() * 100 / duration;tvProgress.setText("播放进度:" + progress + "%");}
};
mTimer.schedule(mTimerTask,0,500);
6.播放视频
6.1 创建一个SurfaceView
SurfaceView = findViewById(R.id.sv_content);
6.2 设置监听
svContent.getHolder().addCallback(new SurfaceHolder.Callback() {@Overridepublic void surfaceCreated(SurfaceHolder holder) {initVideoMediaPlayer(holder);}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {}});
6.3 初始化播放资源
private void initVideoMediaPlayer(SurfaceHolder holder){videoMediaPlayer = MediaPlayer.create(MediaPlayerActivity.this,R.raw.demo);videoMediaPlayer.setDisplay(holder);// 最好监听一下prepare再播放videoMediaPlayer.start();
}
END
常用的api
getCurrentPosition( ):得到当前的播放位置
getDuration() :得到文件的时间
getVideoHeight() :得到视频高度
getVideoWidth() :得到视频宽度
isLooping():是否循环播放
isPlaying():是否正在播放
pause():暂停
prepare():准备(同步)
prepareAsync():准备(异步)
release():释放MediaPlayer对象
reset():重置MediaPlayer对象
seekTo(int msec):指定播放的位置(以毫秒为单位的时间)
setAudioStreamType(int streamtype):指定流媒体的类型
setDisplay(SurfaceHolder sh):设置用SurfaceHolder来显示多媒体
setLooping(boolean looping):设置是否循环播放
setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener): 网络流媒体的缓冲监听
setOnCompletionListener(MediaPlayer.OnCompletionListener listener): 网络流媒体播放结束监听
setOnErrorListener(MediaPlayer.OnErrorListener listener): 设置错误信息监听
setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener): 视频尺寸监听
setScreenOnWhilePlaying(boolean screenOn):设置是否使用SurfaceHolder显示
setVolume(float leftVolume, float rightVolume):设置音量
start():开始播放
stop():停止播放
MediaPlayer的基本使用-播放音乐/视频相关推荐
- Crunch Bang 上设置crontab 定时播放音乐视频
为什么80%的码农都做不了架构师?>>> 故事背景: 由于下午工作时间较长,我们有一个工间操,主要是眼睛,肩,颈,腰活动一下,防止职业病的,有一段配套的视频和音乐,大家跟着一起 ...
- php播放音乐视频,html5停止(暂停)当前播放的音频或视频的方法pause()
实例 带有播放和暂停按钮的一段视频:var myVideo=document.getElementById("video1"); function playVid() { myVi ...
- c#winform演练 ktv项目 MediaPlayer控件播放音乐
c#winform演练 ktv项目 MediaPlayer控件播放音乐 如何播放媒体 媒体控件.URL = 媒体文件的路径 路径说明 绝对路径 从盘符到目录到文件的完整路径 相对路径 项目的bin下有 ...
- Android之使用MediaPlayer和SurfaceView组件播放一个简单的视频
1.MediaPlayer除了可以播放音乐外,还可以播放视频,但是使用MediaPlayer播放音乐时,没有提供图像输出界面,可以使用SurfaceView组件来显示视频画面,首先,必须在布局文件ac ...
- iOS之AVPlayer、MPMoviePlayerController、MPMoviePlayerViewController、AVPlayerViewController播放音乐和视频
AVPlayer播放音乐 #import <AVFoundation/AVFoundation.h> /** 播放器 */ @property (nonatomic, strong) AV ...
- media player 控件播放音乐与视频 0130 winform
media player 控件播放音乐与视频 0130 winform 核心操作 播放器对象.URL = 媒体路径 播放音频 代码 效果 播放视频 代码 效果
- android实现本地视频播放功能,Android开发 MediaPlayer入门_播放本地视频
前言 MediaPlayer,可以播放视频/音频,并且它支持本地和网络文件的播放.本片博客作为入门教程,先以最通俗的方式解释播放文件本地视频. 实现流程 获取权限 保持屏幕常亮 初始化SurfaceV ...
- 微信播放在服务器视频无法播放音乐,【bug解决】ios微信浏览器中背景音乐无法播放...
我记得之前在一次项目中,出现过浏览报错: 所以在这次H5的制作中,我使用了iframe来加载音频文件,使用这种方式后,电脑端是没有问题的,但是当上传至服务器上在手机上浏览时,会出现点击音乐旋转按钮无法 ...
- Linux 下播放音乐和视频
##Linux 下播放音乐和视频 ###播放音乐-CMUS 使用方式像Vim ######安装播放器 sudo apt-get install cmus ######打开播放器 cmus ###### ...
最新文章
- IAR环境下STM32+IAP方案的实现(转)
- 敏捷开发生态系统系列之五:关于敏捷生态系统的一次聊天记录(敏捷估算,同行压力,估算扑克)...
- 安卓拒绝服务漏洞分析及漏洞检测
- 可变、不可变数据类型
- amesim子模型_Amesim液压管道子模型(一):子模型的区别
- python网易云歌词爬虫_用python爬取网易云音乐歌曲的歌词
- 毕设无忧|单片机类毕设论文模板
- java 网页转pdf_JAVA中将html转换成pdf
- 免费微信公众号专用h5在线电影票API
- 【苹果开发者账号】记一次苹果账号付款失败,报 未完成付款 的问题,全网都没解决办法!
- Luogu P1197
- 前端工程化配置-husky + eslint + lint-staged
- 人工智能在集装箱识别中应用
- CE进阶操作--自带小游戏TutorialGame的修改方法
- 嵌入式linux实验截图,嵌入式linux实验二.pdf
- Linux虚拟机的远程三种链接,以及各自的上网方式
- [编程题]蓄水池大作战 Golang 面相对象 无需算法 有手就行
- 图灵1951年报告Intelligent Machinery,A Heretical Theory中英文,公号回复“图灵1951报告”下载PDF双语典藏版
- 玩转console.log 如何在console.log里面插入图片
- PHP 类型提示 type hinting