[Android] 一個簡單的網(wǎng)絡(luò)音頻播放工具類

播放音頻,主要用到一個類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
  • 注意資源釋放
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容