2016-07-27 77 views
-2

我有很多Imageviews可以在播放聲音時播放聲音,並且我設法播放它。 但問題是,當我想點擊另一個應該播放另一個聲音的圖像時,它會停止聲音,但如果在同一個播放按鈕上單擊它,我將無法恢復。我想在點擊其他按鈕時停止播放音頻,然後播放另一個音頻

這裏是我所管理的代碼來得到它的工作至今:

audio1 = (ImageView) popupView.findViewById(R.id.lesson1_audio_gramar_1); 
      assert audio1 != null; 
      audio1.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        if (mMediaPlayer == null) { 
         mMediaPlayer = MediaPlayer.create(Lesson1Activity.this, R.raw.lesson1); 
        } 


        if (mMediaPlayer.isPlaying()) { 

         mMediaPlayer.pause(); 
         audio1.setImageResource(R.drawable.ic_play_circle_filled_black_48dp); 
         try { 
          mMediaPlayer.prepare(); 
         } catch (IllegalStateException e) { 

          e.printStackTrace(); 
         } catch (IOException e) { 

          e.printStackTrace(); 
         } 

        } else { 

         mMediaPlayer.start(); 
         audio1.setImageResource(R.drawable.ic_pause_circle_filled_black_48dp); 
         mMediaPlayer.setOnCompletionListener(mCompletionListener); 
        } 
       } 
      }); 

      audio2 = (ImageView) popupView.findViewById(R.id.lesson1_audio_gramar_2); 
      assert audio2 != null; 
      audio2.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        if (mMediaPlayer == null) { 
         mMediaPlayer = MediaPlayer.create(Lesson1Activity.this, R.raw.lesson2); 
        } 

        if (mMediaPlayer.isPlaying()) { 

         mMediaPlayer.pause(); 
         audio2.setImageResource(R.drawable.ic_play_circle_filled_black_48dp); 
         try { 
          mMediaPlayer.prepare(); 
         } catch (IllegalStateException e) { 

          e.printStackTrace(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 

        } else { 
         mMediaPlayer.start(); 
         audio2.setImageResource(R.drawable.ic_pause_circle_filled_black_48dp); 
         mMediaPlayer.setOnCompletionListener(mCompletionListener); 

        } 


       } 
      }); 

回答

0

要播放另一軌道,按照這個簡單的步驟:

if (mediaPlayer != null) { 
    if(mediaPlayer.isPlaying()){ 
    mediaPlayer.stop(); 
    mediaPlayer.reset() 
    mediaPlayer.setDataSource(new music to play); 
    mediaPlayer.prepare(); 
    } 
} 

然後調用mediaPlayer.start()onPrepared()方法

+0

感謝它幫助 –

相關問題