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的基本使用-播放音乐/视频相关推荐

  1. Crunch Bang 上设置crontab 定时播放音乐视频

    为什么80%的码农都做不了架构师?>>>    故事背景: 由于下午工作时间较长,我们有一个工间操,主要是眼睛,肩,颈,腰活动一下,防止职业病的,有一段配套的视频和音乐,大家跟着一起 ...

  2. php播放音乐视频,html5停止(暂停)当前播放的音频或视频的方法pause()

    实例 带有播放和暂停按钮的一段视频:var myVideo=document.getElementById("video1"); function playVid() { myVi ...

  3. c#winform演练 ktv项目 MediaPlayer控件播放音乐

    c#winform演练 ktv项目 MediaPlayer控件播放音乐 如何播放媒体 媒体控件.URL = 媒体文件的路径 路径说明 绝对路径 从盘符到目录到文件的完整路径 相对路径 项目的bin下有 ...

  4. Android之使用MediaPlayer和SurfaceView组件播放一个简单的视频

    1.MediaPlayer除了可以播放音乐外,还可以播放视频,但是使用MediaPlayer播放音乐时,没有提供图像输出界面,可以使用SurfaceView组件来显示视频画面,首先,必须在布局文件ac ...

  5. iOS之AVPlayer、MPMoviePlayerController、MPMoviePlayerViewController、AVPlayerViewController播放音乐和视频

    AVPlayer播放音乐 #import <AVFoundation/AVFoundation.h> /** 播放器 */ @property (nonatomic, strong) AV ...

  6. media player 控件播放音乐与视频 0130 winform

    media player 控件播放音乐与视频 0130 winform 核心操作 播放器对象.URL = 媒体路径 播放音频 代码 效果 播放视频 代码 效果

  7. android实现本地视频播放功能,Android开发 MediaPlayer入门_播放本地视频

    前言 MediaPlayer,可以播放视频/音频,并且它支持本地和网络文件的播放.本片博客作为入门教程,先以最通俗的方式解释播放文件本地视频. 实现流程 获取权限 保持屏幕常亮 初始化SurfaceV ...

  8. 微信播放在服务器视频无法播放音乐,【bug解决】ios微信浏览器中背景音乐无法播放...

    我记得之前在一次项目中,出现过浏览报错: 所以在这次H5的制作中,我使用了iframe来加载音频文件,使用这种方式后,电脑端是没有问题的,但是当上传至服务器上在手机上浏览时,会出现点击音乐旋转按钮无法 ...

  9. Linux 下播放音乐和视频

    ##Linux 下播放音乐和视频 ###播放音乐-CMUS 使用方式像Vim ######安装播放器 sudo apt-get install cmus ######打开播放器 cmus ###### ...

最新文章

  1. IAR环境下STM32+IAP方案的实现(转)
  2. 敏捷开发生态系统系列之五:关于敏捷生态系统的一次聊天记录(敏捷估算,同行压力,估算扑克)...
  3. 安卓拒绝服务漏洞分析及漏洞检测
  4. 可变、不可变数据类型
  5. amesim子模型_Amesim液压管道子模型(一):子模型的区别
  6. python网易云歌词爬虫_用python爬取网易云音乐歌曲的歌词
  7. 毕设无忧|单片机类毕设论文模板
  8. java 网页转pdf_JAVA中将html转换成pdf
  9. 免费微信公众号专用h5在线电影票API
  10. 【苹果开发者账号】记一次苹果账号付款失败,报 未完成付款 的问题,全网都没解决办法!
  11. Luogu P1197
  12. 前端工程化配置-husky + eslint + lint-staged
  13. 人工智能在集装箱识别中应用
  14. CE进阶操作--自带小游戏TutorialGame的修改方法
  15. 嵌入式linux实验截图,嵌入式linux实验二.pdf
  16. Linux虚拟机的远程三种链接,以及各自的上网方式
  17. [编程题]蓄水池大作战 Golang 面相对象 无需算法 有手就行
  18. 图灵1951年报告Intelligent Machinery,A Heretical Theory中英文,公号回复“图灵1951报告”下载PDF双语典藏版
  19. 玩转console.log 如何在console.log里面插入图片
  20. PHP 类型提示 type hinting

热门文章

  1. 台州学院ACM集训队月赛(元旦场)
  2. Merge into用法总结
  3. #OSG+VS#03第一周
  4. 聊聊支付流程的设计与实现逻辑
  5. 自动追番工具BGmi
  6. python随机分组的方法_Python 分组处理
  7. linux TTY devices
  8. 戴政:决胜互联网+ 让教育更公平
  9. WPF界面设计技巧(6)—玩玩数字墨水手绘涂鸦
  10. 2022年护士资格考试选择题模拟训练及答案