这里是从assets目录或网络中读取一组音频文件,然后以一定间隔时间按顺序播放一遍。
public class PlayMusic implements OnCompletionListener {
private MediaPlayer player = new MediaPlayer();
private int playIndex = -1;
private String[] playList = null;
private int time = 0;
public void mediaPlayer(String[] soundUrl, int interval) {
if (player != null)
player.reset();
else
player = new MediaPlayer();
playList = soundUrl;
playIndex = -1;
time = interval;
player.setOnCompletionListener(this);
playNext();
}
private OnPreparedListener preparedListener = new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
if (player != null)
player.start();
}
};
private void playNext() {
playIndex++;
if (!(playIndex >= 0 && playIndex < playList.length))
return;
String soundFileName = playList[playIndex];
try {
player.reset();
//从Asset目录中读取音频
// AssetFileDescriptor afd = MainActivity.mainContext.getAssets().openFd(soundFileName);
// player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
//从网络上读取音频
Uri uri = Uri.parse(soundFileName);
player.setDataSource(MainActivity.mainContext, uri);
player.setLooping(false);
player.prepareAsync();
player.setOnPreparedListener(preparedListener);
} catch (IllegalArgumentException e1) {
e1.printStackTrace();
} catch (IllegalStateException e1) {
e1.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onCompletion(MediaPlayer mp) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
playNext();
}
}, time);
}
}