2016-07-27 153 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

感谢它帮助 –