76.MediaPlayer[音频播放]

1.要播放音频,必须在res文件夹下建立一个raw的文件夹用于存放音频文件。系统会自动根据文件名产生一个Id,调用的时候直接R.raw.文件名即可【文件名不可以为中文】。

2.创建一个MediaPlayer对象,根据API可以知道使用MediaPlayer的静态方法create(context,resource.id);该方法有两个参数context是指当前的上下文,resource.id是资源文件的id,即音频文件的id.

3.设置一个用于启动播放的按钮,并设置按钮触发事件。这里因为是将播放和暂停集合到同一个按钮上(即点击播放的时候,按钮改变成暂停;点击暂停,按钮变成播放),所以需要注意的是需要判断当前的播放状态,设置一个播放状态的布尔变量,具体实现如下图所示:

  1. 播放音频文件的时候可以设置一个音频进度条,如果需要进度条跟随音乐播放而显示播放进度的时候,因为是同步的,所以需要开启一个线程。通过计算来定时设置进度条的位置。

公式:进度条当前位置=当前音频播放的时间位置/音频总时长*进度条的总长度

这里需要特别注意的是:

注意点1时间是以毫秒计算的,这样数字就比较大,所以这里需要使用long类型来表示。

注意点2当前音频播放时间的位置小于音频总时长,如果是long型相除的话,结果就变成0了,所以需要转换成double型再除。具体实现如下

  1. 如果需要拖动进度条,可以使用进度条的setOnSeekBarChangeListener方法,使用该方法的时候需要实现该方法中的一个匿名内部类。而该内部类中有3个方法。

onStopTrackingTouch当拖动停止的时候

onStartTrackingTouch:当拖动开始的时候

onProgressChanged进度条发生变化的时候

具体实现如下:

该方法存在一定问题,因为当拖动的时候,线程还在运行,不断给进度条的process赋值,所以这里需要在滚动条刚开始拖动的时候就将线程挂起,当拖动完成后再恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值