Files
yusheng-android/moduleUtil/src/main/java/com/qxcm/moduleutil/utils/MediaPlayerUtiles.java

114 lines
3.3 KiB
Java
Raw Normal View History

2025-05-15 11:08:23 +08:00
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;
}