使用MediaPlayer间隔播放一组音频文件

来源:互联网 发布:圣火明尊翅膀进阶数据 编辑:程序博客网 时间:2024/05/16 07:26

                    

         这里是从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();elseplayer = new MediaPlayer();playList = soundUrl;playIndex = -1;time = interval;player.setOnCompletionListener(this);playNext();}private OnPreparedListener preparedListener = new OnPreparedListener() {@Overridepublic 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();}}
@Overridepublic void onCompletion(MediaPlayer mp) {Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {playNext();}}, time);}}


	
				
		
原创粉丝点击