114 lines
3.3 KiB
Java
114 lines
3.3 KiB
Java
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;
|
|
|
|
}
|