简化开发Android技术知识Android开发

Android 音频播放超简单封装

2022-03-16  本文已影响0人  i小灰
package com.baidu.shunba.face.helper;

import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;

/**
 * 声音播放
 */
public class MediaPlayerUtil {

    private static MediaPlayer mPlayer;
    private static boolean isPause = false;
    private static volatile boolean isPlaying = false;

    public static boolean isPlaying() {
        return isPlaying;
    }

    /**
     * playSound 播放声音  例如 MediaPlayerUtil.playSound(this, R.raw.verify_error_passenger);//无效票
     * @param context
     * @param rawResId
     */
    public static void playSound(Context context, int rawResId) {
        playSound(context, rawResId, null);
    }

    public static void playSound(Context context, final int rawResId, final OnCompletionListener listener) {
        try {
            release();

            mPlayer = MediaPlayer.create(context, rawResId);

            mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mPlayer.setOnCompletionListener(new OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
                    release();
                    isPlaying = false;
                    if (listener != null) {
                        try {
                            listener.onCompletion(mediaPlayer);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            });
            mPlayer.setOnErrorListener(new OnErrorListener() {
                @Override
                public boolean onError(MediaPlayer mp, int what, int extra) {
                    mPlayer.reset();
                    isPlaying = false;
                    if (listener != null) {
                        try {
                            listener.onCompletion(null);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    return false;
                }
            });

//            mPlayer.prepare();
            mPlayer.start();
            isPlaying = true;

            isPause = false;
        } catch (Exception e) {
            if (listener != null) {
                try {
                    listener.onCompletion(null);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        }
    }
    public static void pause() {
        if (mPlayer != null && mPlayer.isPlaying()) {
            mPlayer.pause();
            isPause = true;
        }
    }

    // 继续
    public static void resume() {
        if (mPlayer != null && isPause) {
            mPlayer.start();
            isPause = false;
        }
    }

    public static void release() {
        if (mPlayer != null) {
            try {
                mPlayer.release();
            } catch (Exception e) {

            }
            mPlayer = null;
        }

        isPlaying = false;
    }
}

上一篇下一篇

猜你喜欢

热点阅读