package com.qxcm.moduleutil.utils; import android.media.MediaPlayer; import android.util.Log; public class MediaPlayerUtiles { private MediaPlayer mediaPlayer; private static MediaPlayerUtiles instance = new MediaPlayerUtiles(); public static MediaPlayerUtiles getInstance() { return instance; } private MediaPlayerUtiles() { if (null == mediaPlayer) { mediaPlayer = new MediaPlayer(); } } private OnMediaPlayerListener mOnMediaPlayerListener; /** * 播放音频 */ public void playAudio(String url, OnMediaPlayerListener onMediaPlayerListener) { playAudio(url, -1, onMediaPlayerListener); } public boolean isPlaying() { return mediaPlayer != null && mediaPlayer.isPlaying(); } /** * 停止播放音频 */ public void stopAudio() { try { if (null != mediaPlayer) { if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); mediaPlayer.reset(); mediaPlayer.stop(); } } if (mOnMediaPlayerListener != null) { mOnMediaPlayerListener.onCompletion(position); } this.mOnMediaPlayerListener = null; } catch (Exception e) { Log.e("stopAudio", e.getMessage()); } } public long getCurrentPosition() { if (mediaPlayer != null) { return mediaPlayer.getCurrentPosition(); } return 0; } public void playAudio(String url, int position, OnMediaPlayerListener onMediaPlayerListener) { this.position = position; try { stopAudio();//如果正在播放就停止 if (this.mOnMediaPlayerListener != null) { this.mOnMediaPlayerListener.onCompletion(position); } this.mOnMediaPlayerListener = onMediaPlayerListener; mediaPlayer.reset(); mediaPlayer.setDataSource(url); mediaPlayer.setLooping(false); mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); if (mOnMediaPlayerListener != null) { mOnMediaPlayerListener.onStartPlay(position); } } }); mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { if (mOnMediaPlayerListener != null) { mOnMediaPlayerListener.onCompletion(position); } } }); mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { return false; } }); } catch (Exception e) { e.printStackTrace(); Log.e("播放音频失败", ""); } } public interface OnMediaPlayerListener { void onStartPlay(int position); void onCompletion(int position); } private int position = -1; }