播放音頻,主要用到一個類MediaPlayer。我們需要實(shí)現(xiàn)的這個網(wǎng)絡(luò)音頻播放工具類就是對這個類的一系列方法進(jìn)行封裝的
因?yàn)榇a比較簡單,就直接貼出代碼并略微解釋一下。
public class VoicePlayer implements MediaPlayer.OnCompletionListener, MediaPlayer.OnPreparedListener {
public MediaPlayer mediaPlayer;
private boolean isCompletion = false;
private boolean isPrepared = false;
public VoicePlayer() {
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnPreparedListener(this);
} catch (Exception e) {
Log.e("mediaPlayer", "error", e);
}
}
public boolean isPlaying() {
return mediaPlayer.isPlaying();
}
/**
* 播放
*/
public void play() {
if (mediaPlayer != null) {
mediaPlayer.start();
}
}
public void playUrl(String videoUrl) {
try {
isCompletion = false;
mediaPlayer.reset();
mediaPlayer.setDataSource(videoUrl);
mediaPlayer.prepare();
} catch (IllegalArgumentException | IllegalStateException | IOException e) {
e.printStackTrace();
}
}
/**
* 暫停
*/
public void pause() {
mediaPlayer.pause();
}
public void stop() {
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
}
}
/**
* 重播
*/
public void replay() {
if (mediaPlayer != null) {
mediaPlayer.seekTo(0);
}
}
@Override
public void onPrepared(MediaPlayer arg0) {
isPrepared = true;
}
@Override
public void onCompletion(MediaPlayer arg0) {
isCompletion = true;
}
/**
* 是否準(zhǔn)備完畢
*/
public boolean isPrepared() {
return isPrepared;
}
/**
* 是否播放完畢
*/
public boolean isCompletion() {
return isCompletion;
}
}
- 音頻準(zhǔn)備:
mediaPlayer.setOnPreparedListener(this);
當(dāng)音頻加載完成之后會回調(diào)。所以在這之前可以讓icon變成一個圓形進(jìn)度條讓它轉(zhuǎn)動,加載完成之后再將回調(diào)拋給調(diào)用類,這里就不寫示例了 - 音頻重播:
mediaPlayer.seekTo(0);
很簡單,就是讓音頻的位置置于0 - 注意資源釋放