Android开发之MediaPlayer使用

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,网络等加载

实例

简单实现一个带进度条的音乐播放器
image.png
布局文件很简单,一个进度条,三个按钮

 <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;
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值