2016-07-27 4 views
-2

Ich habe viele Imageviews, um Ton zu spielen, wenn angeklickt und ich es geschafft habe, es zu spielen. aber das Problem, dass, wenn ich auf ein anderes Bild klicken möchte, die einen anderen Ton spielen soll, stoppt es den Ton, aber ich kann nicht fortsetzen, wenn es auf der gleichen Play-Taste geklickt wurde.Ich möchte Audio stoppen, wenn andere Taste geklickt wird und dann ein anderes Audio abspielen

Hier ist der Code, den ich habe es geschafft, um es so weit zu arbeiten:

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); 

        } 


       } 
      }); 

Antwort

0

einen weiteren Titel zu spielen, folgen Sie diesem einfachen Schritten:

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

nennen Dann mediaPlayer.start() in der onPrepared() Methode

+0

Danke, es hat geholfen –