这里是从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); } }