MediaPlayer 播放網(wǎng)絡(luò)音頻工具類

最近的項目需要播放網(wǎng)絡(luò)音頻,就直接摘成一個工具類了

public class MediaPlayerUtil {
  private static volatile MediaPlayerUtil mediaPlayer;

  private MediaPlayerUtil() {
  }

  public static MediaPlayerUtil getMediaPlayer() {
    if (mediaPlayer == null) {
        synchronized (MediaPlayerUtil.class) {
            if (mediaPlayer == null) {
                mediaPlayer = new MediaPlayerUtil();
            }
        }
    }
    return mediaPlayer;
}

private MediaPlayer mPlayer;

/**
 * 播放音頻
 *
 * @param songUrl 網(wǎng)絡(luò)音頻Url
 */
public void player(String songUrl) {

    if (TextUtils.equals(songUrl, nowPlaySongUrl)) {
        Log.d(TAG, "player: 重復(fù)的url");
        return;
    }
    stopPlay();
    nowPlaySongUrl = songUrl;

    if (mPlayer == null) {
        mPlayer = new MediaPlayer();
    }
    try {
        Log.d(TAG, "player: 當前要播放的歌曲Url === " + songUrl);

        mPlayer.reset();
        //====這種方式只能http,https會拋IO異常
        mPlayer.setDataSource(songUrl);

        mPlayer.prepareAsync();
        mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                Log.d(TAG, "onPrepared: 播放 "+mp.getDuration());
                mp.start();
            }
        });
        mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                nowPlaySongUrl = "";
                if (mPlayer != null)
                    mPlayer.release();
                if (mPlayer != null)
                    mPlayer = null;
            }
        });
    } catch (IOException e) {
        Log.d(TAG, " 播放音樂異常" + e.getMessage());
        ToastUtil.showShort(" 播放音樂異常" + e.getMessage());
    }
}

/**
 * 列表中的音頻播放
 * <p>
 * 點擊播放,再點擊停止
 *
 * @param songUrl
 */
public void playOrStop(String songUrl) {
    if (mPlayer != null) {
        stopPlay();
    } else {
        player(songUrl);
    }
}

/**
 * 停止播放音頻,lastSongUrl置空
 */
public void stopPlay() {
    nowPlaySongUrl = "";
    try {
        if (mPlayer != null)
            mPlayer.stop();
        if (mPlayer != null)
            mPlayer.release();
        if (mPlayer != null)
            mPlayer = null;
    } catch (Exception e) {
        Log.e(TAG, "stopPlay: " + e.toString());
    }
}

// 當前播放的音頻地址
  private static String nowPlaySongUrl;

  private static String TAG = "TAG.Util.MediaPlay";
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容