196 lines
6.7 KiB
Java
196 lines
6.7 KiB
Java
package com.ubt.jimu.blockly.feature.audio;
|
|
|
|
import android.media.MediaPlayer;
|
|
import android.text.TextUtils;
|
|
import android.util.Log;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.util.Timer;
|
|
import java.util.TimerTask;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class AudioPlayer {
|
|
private static AudioPlayer player;
|
|
private MediaPlayer mPlayer;
|
|
private String source;
|
|
private Timer timer;
|
|
private final String TAG = AudioPlayer.class.getSimpleName();
|
|
private boolean isPausing = false;
|
|
private int progress = -1;
|
|
|
|
public interface IProgressListener {
|
|
void onError();
|
|
|
|
void onFinished();
|
|
}
|
|
|
|
private class MyTimerTask extends TimerTask {
|
|
private long future;
|
|
|
|
public MyTimerTask(long j) {
|
|
this.future = j;
|
|
}
|
|
|
|
@Override // java.util.TimerTask, java.lang.Runnable
|
|
public void run() {
|
|
if (AudioPlayer.this.mPlayer == null || AudioPlayer.this.mPlayer.getCurrentPosition() < this.future) {
|
|
return;
|
|
}
|
|
AudioPlayer.this.stop();
|
|
AudioPlayer.this.timer.cancel();
|
|
AudioPlayer.this.timer = null;
|
|
}
|
|
}
|
|
|
|
private AudioPlayer() {
|
|
this.mPlayer = null;
|
|
this.mPlayer = new MediaPlayer();
|
|
this.mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { // from class: com.ubt.jimu.blockly.feature.audio.AudioPlayer.1
|
|
@Override // android.media.MediaPlayer.OnCompletionListener
|
|
public void onCompletion(MediaPlayer mediaPlayer) {
|
|
Log.i(AudioPlayer.this.TAG, "onCompletion");
|
|
}
|
|
});
|
|
this.mPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() { // from class: com.ubt.jimu.blockly.feature.audio.AudioPlayer.2
|
|
@Override // android.media.MediaPlayer.OnSeekCompleteListener
|
|
public void onSeekComplete(MediaPlayer mediaPlayer) {
|
|
Log.i(AudioPlayer.this.TAG, "onSeekComplete");
|
|
}
|
|
});
|
|
this.mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { // from class: com.ubt.jimu.blockly.feature.audio.AudioPlayer.3
|
|
@Override // android.media.MediaPlayer.OnErrorListener
|
|
public boolean onError(MediaPlayer mediaPlayer, int i, int i2) {
|
|
Log.e(AudioPlayer.this.TAG, "播放onError:what=" + i + " extra=" + i2);
|
|
return false;
|
|
}
|
|
});
|
|
this.mPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() { // from class: com.ubt.jimu.blockly.feature.audio.AudioPlayer.4
|
|
@Override // android.media.MediaPlayer.OnInfoListener
|
|
public boolean onInfo(MediaPlayer mediaPlayer, int i, int i2) {
|
|
Log.e(AudioPlayer.this.TAG, "onInfo:what=" + i + " extra=" + i2);
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
|
|
public static synchronized AudioPlayer getInstance() {
|
|
AudioPlayer audioPlayer;
|
|
synchronized (AudioPlayer.class) {
|
|
if (player == null) {
|
|
player = new AudioPlayer();
|
|
}
|
|
audioPlayer = player;
|
|
}
|
|
return audioPlayer;
|
|
}
|
|
|
|
private void startTimer(long j) {
|
|
Timer timer = this.timer;
|
|
if (timer != null) {
|
|
timer.cancel();
|
|
}
|
|
this.timer = new Timer();
|
|
this.timer.schedule(new MyTimerTask(j), 0L, 50L);
|
|
}
|
|
|
|
public long getAudioDuration(String str) {
|
|
try {
|
|
this.mPlayer.reset();
|
|
this.mPlayer.setDataSource(str);
|
|
this.mPlayer.prepare();
|
|
return this.mPlayer.getDuration();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return 0L;
|
|
}
|
|
}
|
|
|
|
public void pause() {
|
|
try {
|
|
this.progress = this.mPlayer.getCurrentPosition();
|
|
this.isPausing = true;
|
|
this.mPlayer.pause();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public boolean play(String str) {
|
|
if (!new File(str).exists()) {
|
|
return false;
|
|
}
|
|
try {
|
|
this.mPlayer.reset();
|
|
this.mPlayer.setDataSource(str);
|
|
this.mPlayer.prepare();
|
|
if (TextUtils.isEmpty(this.source)) {
|
|
this.source = str;
|
|
this.progress = -1;
|
|
this.isPausing = false;
|
|
} else if (this.source.equals(str)) {
|
|
if (!this.isPausing) {
|
|
this.source = str;
|
|
this.progress = -1;
|
|
this.isPausing = false;
|
|
} else if (this.progress > -1) {
|
|
this.mPlayer.seekTo(this.progress);
|
|
this.progress = -1;
|
|
this.isPausing = false;
|
|
}
|
|
}
|
|
this.mPlayer.start();
|
|
return true;
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public void release() {
|
|
this.mPlayer.release();
|
|
this.mPlayer = null;
|
|
}
|
|
|
|
public void stop() {
|
|
try {
|
|
this.source = null;
|
|
this.mPlayer.stop();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public boolean play(String str, final IProgressListener iProgressListener) {
|
|
this.mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { // from class: com.ubt.jimu.blockly.feature.audio.AudioPlayer.5
|
|
@Override // android.media.MediaPlayer.OnCompletionListener
|
|
public void onCompletion(MediaPlayer mediaPlayer) {
|
|
IProgressListener iProgressListener2 = iProgressListener;
|
|
if (iProgressListener2 != null) {
|
|
iProgressListener2.onFinished();
|
|
}
|
|
AudioPlayer.this.mPlayer.setOnCompletionListener(null);
|
|
}
|
|
});
|
|
this.mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { // from class: com.ubt.jimu.blockly.feature.audio.AudioPlayer.6
|
|
@Override // android.media.MediaPlayer.OnErrorListener
|
|
public boolean onError(MediaPlayer mediaPlayer, int i, int i2) {
|
|
Log.e(AudioPlayer.this.TAG, "MediaPlayer onError:what=" + i + " extra=" + i2);
|
|
IProgressListener iProgressListener2 = iProgressListener;
|
|
if (iProgressListener2 != null) {
|
|
iProgressListener2.onError();
|
|
}
|
|
AudioPlayer.this.mPlayer.setOnErrorListener(null);
|
|
return false;
|
|
}
|
|
});
|
|
return play(str);
|
|
}
|
|
|
|
public void play(String str, long j, IProgressListener iProgressListener) {
|
|
if (!play(str, iProgressListener) || j <= 0) {
|
|
return;
|
|
}
|
|
startTimer(j);
|
|
}
|
|
}
|