2018-07-11

浅谈Android  MediaPlayer

前言

MediaPlayer是Android中多媒体框架中一个重要的组件,我们通过它可以控制在线或者本地音视频的播放过程.



MediaPlayer常用方法介绍

1.void setDataSource(String  url)通过一个具体的路径来设置MediaPlayer的数据源,url可以是本地的一个路径,也可以是一个网络路径.

2.void  setDataSource(Context context, Uri uri )通过给定的Uri来设置MediaPlayer的数据源,这里的Uri可以是网络路径或是一个ContentProvider的Uri.

3.void setDataSource(MediaDataSource dataSource) 通过提供的MediaDataSource来设置数据源

4.void setDataSource(FileDescriptor fd) 通过文件描述符FileDescriptor来设置数据源

5.getCurrentPosition()获取当前播放位置

6.getDuration()得到文件时间

7.boolean isLooping()是否循环播放

8.boolean  isPlaying()是否正在播放

9.void  pause()暂停

10.void stop()停止

11.void start()播放

12.void prepare()同步装载流媒体文件

13.void  prepareAsync()异步装载流媒体文件

14.void  reset()重置MeidaPlayer至未初始的状态

15.void release()回收流媒体资源

16.void  seekTo(int msec)指定播放位置(毫秒计算)

17.void setAudioStreamType(int streamtype) 指定流媒体类型

18.void setLooping(boolean looping) 设置是否单曲循环

19.setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener) 网络流媒体的缓冲变化时回调 **

20.setOnCompletionListener(MediaPlayer.OnCompletionListener listener) 网络流媒体播放结束时回调

21.setOnErrorListener(MediaPlayer.OnErrorListener listener)  发生错误时回调 **

22.setOnPreparedListener(MediaPlayer.OnPreparedListener listener):当装载流媒体完毕的时候回调。

!划重点

1.在使用start()播放流媒体之前,需要装载流媒体资源,建议最好使用prepareAsync()异步装载的方式装载流媒体资源.这是因为流媒体资源的装载会消耗系统资源,在一些硬件设备不理想的情况下,可能会造成界面的卡顿.为了避免还没有装载完成就调用start()而报错的问题,需要绑定MediaPlayer.setOnPreparedListener()事件,它将在异步装载完成之后回调.

mediaPlayer.reset();

try {

    mediaPlayer.setDataSource(url);

    mediaPlayer.prepareAsync();

    mediaPlayer.setOnPreparedListener(onPreparedListener);

}catch (IOException e) {

    e.printStackTrace();

}

public MediaPlayer.OnPreparedListener onPreparedListener = new MediaPlayer.OnPreparedListener() {

    @Override

    public void onPrepared(MediaPlayer mp) {

        //开始播放

        mp.start();

}

};

2.getCurrentPosition()以及getDuration()方法调用事件,如果媒体资源未start()之前就调用这两个方法,则会触发MeidaPlayer.setOnErrorListener()事件,在onError()方法中,我们一般是执行next()方法,所以就会导致切歌的现象.

3.播放完毕后的操作,这里就有另一个监听事件了MediaPlayer.setOnCompletionListener(),资源播放完毕一般的处理和onError()一致,都是执行next()方法.

4.MeidaPlayer的回收,MediaPlayer是很消耗系统资源的,所以在使用完MediaPlayer,不要等待系统自动回收,最好是主动回收资源。

if (mediaPlayer != null) {

    mediaPlayer.reset();

    mediaPlayer.release();

    mediaPlayer = null;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • by吴思博20180131 一、MediaPlayer详解 二、常用方法 1、使用进度条: 2、prepare方法...
    吴小博Toby阅读 9,298评论 0 16
  • 安卓平台和声音录制与播放相关的主要是4个类:MediaRecorder,MediaPlayer,SoundPool...
    闲庭阅读 10,633评论 1 47
  • Android的多媒体框架支持各种常见的多媒体类型,这样在程序中可以很容易地集成音频、视频或者图片。Android...
    _Ryan阅读 61,676评论 13 54
  • 0基础新人《C Primer Plus(第六版)中文版》2.12编程练习(P37-38)自敲答案整合(不保证正确)...
    Lordangel阅读 247评论 0 0
  • 教学资源与生成性教学资源 生成性教学关注教学事件,强调将教学事件转化成生成性教学资源加以利用,理清教学事件、教学资...
    宜都黎明阅读 1,119评论 0 0