如何让MediaPlayer实现AB段复读功能

近日在做一个学习法语的小应用,被MP3AB段复读的功能困扰了很久,最后终于在网上找到一个解决方法,就是使用CountDownTimer让MediaPlayer只播放MP3的某个区段,轻松解决了AB段复读的功能。详细代码如下:

public void play(final String filePath) throws Exception {
try {
if (mMediaPlayer == null) {
// 创建MediaPlayer对象并设置Listener
mMediaPlayer = new MediaPlayer();
} else {
// 复用MediaPlayer对象
mMediaPlayer.reset();
}
mMediaPlayer.setDataSource(filePath);
mMediaPlayer.prepare();
mMediaPlayer.setVolume(10.f, 1.0f);

// 复读第10秒到第20秒这个区间的音频
int startPos = 10000;
int endPos = 20000;
// Try to play three times
repeatAToB(startPos, endPos, 3);

} catch (Exception e) {
e.printStackTrace();
}
}

private void repeatAToB(final int startPos, final int endPos, final int repeatTimes)throws Exception {

mMediaPlayer.seekTo(startPos);
mMediaPlayer.start();
CountDownTimer cntr_aCounter = new CountDownTimer(/* millisInFuture= */endPos - startPos, /* countDownInterval= */1000) {
public void onTick(long millisUntilFinished) {
// DO SOMETHING
}

public void onFinish() {
// Code fire after finish
if((repeatTimes - 1) > 0){
try {
repeatAToB(startPos, endPos, repeatTimes - 1);
} catch (Exception e) {
e.printStackTrace();
}
}else{
mMediaPlayer.stop();
}
}
};
cntr_aCounter.start();
}


如果大家有更好的方案,欢迎拍砖!!
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值