Android开发之MediaPlayer使用
阅读原文时间:2021年04月20日阅读:1

MediaPlayer

MediaPlayer是Android系统自带的,可以用来播放音频、视频和流媒体。MediaPlayer包含了Audio和Video的播放功

常用方法

方法

说明

create

创建一多媒体

getCurrentPosition

当前播放位置

getDuration

文件的总时间

getVideoHeight

视频的高度

getVideoWidth

视频的宽度

isLooping

是否循环播放

isPlaying

是否正在播放

start

开始播放

pause

暂停

prepare

准备(同步)

prepareAsync

准备(异步)

stop

停止播放

release

释放相关资源

reset

重置

seekTo

指定

setAudioStreamType

设置类型

setDataSource

设多媒体数据来源

setDisplay

设置显示多媒体的载体

setLooping

是否循环播放

setOnButteringUpdateListener

网络流媒体的缓冲监听

setOnErrorListener

错误信息监听

setOnVideoSizeChangedListener

视频尺寸监听

setScreenOnWhilePlaying

设置是否保持屏幕常亮

setVolume

设置音量

播放实现

简单步骤

创建一个MediaPlayer对象,实现start()方法,便可以简单播放音乐

    mPlayer = MediaPlayer.create(this, R.raw.summer);
    mPlayer.start();
具体步骤
  • 先创建MediaPlayer对象;

  • 调用setDataSource()方法来设置音频文件来源;

  • 再调用prepare()/prepareAysnc()方法进行准备;

  • 调用start方法就可以播放音频。

       mediaPlayer = new MediaPlayer();
       mediaPlayer.setDataSource(file.getAbsolutePath());
      mediaPlayer.setOnPreparedListener(this);
       mediaPlayer.prepareAsync();
    
      //setOnPreparedListener(this)实现的方法
      @Override
      public void onPrepared(MediaPlayer mp) {
      mediaPlayer.start();
      }

    MediaPlayer实现了四个不同setDataSource()方法

    setDataSource (String path)
    setDataSource (FileDescriptor fd)
    setDataSource (Context context, Uri uri)
    setDataSource (FileDescriptor fd, long offset, long length)
    可以从路径,raw,Assets,网络等加载

实例

简单实现一个带进度条的音乐播放器

布局文件很简单,一个进度条,三个按钮

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp"
android:orientation="vertical">


<TextView
    android:id="@+id/tv_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="歌曲名"
    android:textSize="20dp"/>

<SeekBar
    android:id="@+id/seek_bar_music"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="0"
    android:progress="0" />


<Button
    android:id="@+id/btn_play"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:text="播放" />

<Button
    android:id="@+id/btn_pause"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:text="暂停" />

<Button
    android:id="@+id/btn_stop"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:text="停止" />

</LinearLayout>  

具体实现
点击播放按钮进行播放

        case R.id.btn_play:

            if (mPlayer != null) {
                mPlayer.release();
                mPlayer = null;
            }
            mPlayer = new MediaPlayer();
            mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mPlayer.setOnPreparedListener(this);
            try {
                mPlayer.setDataSource(url);
            } catch (Exception e) {
                e.printStackTrace();
            }
            mPlayer.prepareAsync();
            break;

OnPrepared准备完成之后,开始播放

      //setOnPreparedListener(this)实现的方法
@Override
public void onPrepared(MediaPlayer mp) {
    mp.start();
    timer();

}

点击暂停或停止按钮,暂停或结束播放

   case R.id.btn_pause:
            if (mPlayer.isPlaying()) {
                mPlayer.pause();
            }
            break;
   case R.id.btn_stop:
            if (mPlayer != null) {

                mPlayer.stop();
                mPlayer.reset();
            }
            break;