package com.bw.yindanli.utils;
import android.media.MediaPlayer;
import android.widget.ImageView;
import com.bw.yindanli.Bean.JavaBean;
import com.bw.yindanli.R;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MusicUtils {
//音乐播放器
private MediaPlayer mediaPlayer;
private List<JavaBean.DataDTO> list=new ArrayList<>();//存放音乐的列表
private int index=0;//记录当前播放的是列表中的第几首
private int platMode=0;//设置播放模式,修改index的值 0--顺序播放 1--随机播放 2--单曲循环
private MusicUtils(){
mediaPlayer=new MediaPlayer();
}
private static MusicUtils musicUtils=null;
public static MusicUtils getInstance(){
if(musicUtils==null){
musicUtils=new MusicUtils();
}
return musicUtils;
}
public List<JavaBean.DataDTO> getList() {
return list;
}
public void setList(List<JavaBean.DataDTO> list) {
this.list = list;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public int getPlatMode() {
return platMode;
}
public void setPlatMode(int platMode) {
this.platMode = platMode;
}
//实现播放音乐
public void play(int i){//传入点击的是哪首歌
index=i;//赋值给全局变量index
mediaPlayer.reset();//处于空闲状态
try {
mediaPlayer.setDataSource(list.get(index).getData());//设置资源路径
mediaPlayer.prepareAsync();//异步准备
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {//设置监听事件
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();//开始播放
}
});
} catch (IOException e) {
throw new RuntimeException(e);
}
}
//实现暂停播放音乐
public void playorpause(ImageView imageView){
boolean playing = mediaPlayer.isPlaying();//当前是否播放
if(playing){
mediaPlayer.pause();//暂停播放
imageView.setImageResource(R.drawable.ic_action_play);
}else{
mediaPlayer.start();//开始播放
imageView.setImageResource(R.drawable.ic_action_pause);
}
}
//实现上一首
public void pre(){
if(platMode==0){//顺序播放
index--;
if(index<0){//考虑数组越界
index=list.size()-1;
}
play(index);
}else if(platMode==1){//随机播放
index=new Random().nextInt(list.size()-1);//生成随机数
play(index);
}
}
//实现下一首
public void next(){
if(platMode==0){//顺序播放
index++;
if(index>list.size()-1){//考虑数组越界
index=0;
}
play(index);
}else if(platMode==1){//随机播放
index=new Random().nextInt(list.size()-1);//生成随机数
play(index);
}
}
//快进5秒
public void kjin(){
int currentPosition = mediaPlayer.getCurrentPosition();//获取当前播放时长
currentPosition+=5*1000;//快进5秒
mediaPlayer.seekTo(currentPosition);//跳转到指定时常的位置
}
//快退5秒
public void ktui(){
int currentPosition = mediaPlayer.getCurrentPosition();//获取当前播放时长
currentPosition-=5*1000;//快退5秒
mediaPlayer.seekTo(currentPosition);//跳转到指定时常的位置
}
//返回当前播放音乐的信息
public String getTiyle(){//歌名
return list.get(index).getTitle();
}
public String getArtist(){//歌手名
return list.get(index).getArtist();
}
public String getAlbum(){//专辑封面
return list.get(index).getAlbum();
}
public String getLec(){//歌词
return list.get(index).getLrc();
}
//进度条 系类
public int getProgress(){//当前进度
return mediaPlayer.getCurrentPosition();
}
public int getDuration(){//总时长总大小
return mediaPlayer.getDuration();
}
public void seekTo(int time){//跳转到指定位置
mediaPlayer.seekTo(time);
}
}