lmw
2024-11-12 610a2aedd505bb4d8fb29f0bc6741ced74218bb0
app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java
@@ -29,6 +29,8 @@
    private String audio = "";//音源
    private boolean isPause = false; //是否暂停,解决循环播放时资源文件prepare异步产生的暂停失败问题
    /**
     * 文件存储默认sdcard/record
     */
@@ -218,12 +220,13 @@
     */
    public void startPlayMusic(Context context, String filePath) {
        if (mMediaPlayer != null) {
            stopPlayMusic();
            stopPlayMusic(false);
        }
        mMediaPlayer = new MediaPlayer();
        mMediaPlayer.setVolume(volume,volume);
        isPause = false;
        try {
            Log.e("mmp", "path:" + filePath);
            Log.e("mmp", "开始播放 path:" + filePath);
            mMediaPlayer.setDataSource(context, Uri.parse(filePath));
            mMediaPlayer.prepareAsync();
            mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@@ -242,7 +245,7 @@
            mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    stopPlayMusic();
                    stopPlayMusic(true);
//                    BaseEvent baseEvent = new BaseEvent(BaseEvent.SEND_AODIO_PLAY_OVER);
//                    baseEvent.setMsg(filePath);
//                    EventBus.getDefault().post(baseEvent);
@@ -261,12 +264,13 @@
     */
    public void loopPlayMusic(Context context, String filePath) {
        if (mMediaPlayer != null) {
            stopPlayMusic();
            stopPlayMusic(false);
        }
        mMediaPlayer = new MediaPlayer();
        mMediaPlayer.setVolume(volume,volume);
        isPause = false;
        try {
            Log.e("mmp", "path:" + filePath);
            Log.e("mmp", "循环播放 path:" + filePath);
            mMediaPlayer.setDataSource(context, Uri.parse(filePath));
            mMediaPlayer.prepareAsync();
            mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@@ -281,7 +285,12 @@
            mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    Log.e("mmp", "播放完成 从新循环 path:" + filePath);
                    mMediaPlayer.start();
                    if (isPause){
                        Log.e("mmp", "循环播放异步暂停");
                        mMediaPlayer.pause();
                    }
                }
            });
@@ -293,12 +302,20 @@
    public void pause(){
        if (mMediaPlayer != null) {
            mMediaPlayer.pause();
            isPause = true;
        }
    }
    public void resume(){
        if (mMediaPlayer != null) {
            mMediaPlayer.start();
            isPause = false;
        }
    }
    public void seekTo(int now){
        if (mMediaPlayer != null) {
            mMediaPlayer.seekTo(now*1000);
        }
    }
@@ -316,15 +333,19 @@
        return 0;
    }
    //结束录音播放
    public void stopPlayMusic() {
    /**
     * 结束录音播放
     * @param needCallback  true真实结束 才走结束回调,为了切换下一首而结束的 不调结束回调
     */
    public void stopPlayMusic(boolean needCallback) {
        if (mMediaPlayer == null)
            return;
        try {
            mMediaPlayer.stop();
            mMediaPlayer.release();
            mMediaPlayer = null;
            if (audioStatusUpdateListener != null)
            if (audioStatusUpdateListener != null&&needCallback)
                audioStatusUpdateListener.onFinishPlay();
        } catch (IllegalStateException e) {
            e.printStackTrace();
@@ -340,7 +361,7 @@
     */
    public int getMusicTime(Context context, String filePath) {
        if (mMediaPlayer != null) {
            stopPlayMusic();
            stopPlayMusic(false);
        }
        mMediaPlayer = new MediaPlayer();
        try {