2017-10-16 7 views
-1

bonjour tout j'ai un lecteur multimédia qui joue une chanson d'url donc après la chanson terminer le bouton de lecture bascule pour arrêter le bouton ... donc je veux chaque fois que le bouton est cliqué à nouveau pour jouer la chanson un autre temps et je ne sais pas comment y parvenir.après la chanson terminer le bouton de lecture bascule pour arrêter le bouton de sorte que la chose ne sais pas est de savoir comment réinitialiser le lecteur multimédia et définir à nouveau la source de données afin pouvez-vous vérifier mon code s'il vous plaît et dites-moi où le placerandroid media player rejouer chanson encore

ceci est mon code espère que vous m'avez aidé et merci.

public class MusicPlayerActivity extends AppCompatActivity implements Runnable, 
     SeekBar.OnSeekBarChangeListener { 

ImageView playpause; 
SeekBar seekBar; 
ImageView download; 
MediaPlayer mp = null; 
int len = 0; 
boolean isPlaying = false; 


public MusicPlayerActivity() throws IOException { 
} 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_music_player); 
    final String url = getIntent().getExtras().getString("musicurl"); 
    playpause = (ImageView)findViewById(R.id.imageView); 
    seekBar = (SeekBar)findViewById(R.id.seekBar); 
    playpause.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if(!isPlaying){ 
       playpause.setImageResource(R.drawable.pause); 
       mp.pause(); 
       len = mp.getCurrentPosition(); 
       seekBar.setEnabled(false); 


      }else{ 
       playpause.setImageResource(R.drawable.play); 
       mp.seekTo(len); 
       mp.start(); 
       seekBar.setEnabled(true); 

      } 
      isPlaying = !isPlaying; 



     } 
    }); 

    mp = new MediaPlayer(); 
    try { 
     mp.setDataSource(url); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     mp.prepare(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    //if(mp.isPlaying()) mp.stop(); mp.release(); 
    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mediaPlayer) { 
      mediaPlayer.reset(); 
      seekBar.setProgress(0); 
      playpause.setImageResource(R.drawable.pause); 

     } 
    }); 
    mp.start(); 
    seekBar.setMax(mp.getDuration()); 

    new Thread(this).start(); 
    seekBar.setOnSeekBarChangeListener(this); 


    // Toast.makeText(this, mp.getDuration(), Toast.LENGTH_SHORT).show(); 


} 
@Override 
public void onProgressChanged(SeekBar seekBar, int progress, 
           boolean fromUser) { 
    try { 
     if (mp.isPlaying() || mp != null) { 
      if (fromUser) 
       mp.seekTo(progress); 
     } else if (mp == null) { 
      Toast.makeText(getApplicationContext(), "Media is not running", 
        Toast.LENGTH_SHORT).show(); 
      seekBar.setProgress(0); 
     } 
     //if(progress==seekBar.getMax()) seekBar.setProgress(0); 

    } catch (Exception e) { 
     Log.e("seek bar", "" + e); 
     seekBar.setEnabled(false); 

    } 

} 

@Override 
public void onStartTrackingTouch(SeekBar seekBar) { 

} 

@Override 
public void onStopTrackingTouch(SeekBar seekBar) { 

} 

public void run() { 
    int currentPosition = mp.getCurrentPosition(); 
    int total = mp.getDuration(); 

    while (mp != null && currentPosition < total) { 
     try { 
      Thread.sleep(1000); 
      currentPosition = mp.getCurrentPosition(); 


     } catch (InterruptedException e) { 
      return; 
     } catch (Exception e) { 
      return; 
     } 
     seekBar.setProgress(currentPosition); 


    } 
    seekBar.setProgress(0); 


} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      mp.stop(); 
      startActivity(new Intent(this,MainActivity.class)); 
      break; 
    } 
    return true; 
} 
@Override 
public void onBackPressed() { 
    Intent mainActivity = new Intent(Intent.ACTION_MAIN); 
    mainActivity.addCategory(Intent.CATEGORY_HOME); 
    mainActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(mainActivity); 
} 
} 
+0

Voulez-vous cliquer à nouveau sur le bouton et rejouer la chanson? Ou vous voulez juste que la chanson répète. – samirk433

+0

Je veux rejouer la chanson –

Répondre

0

Ceci est votre lecteur multimédia écouteur d'achèvement:

mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
    @Override 
    public void onCompletion(MediaPlayer mediaPlayer) { 
     mediaPlayer.reset(); 
     seekBar.setProgress(0); 
     playpause.setImageResource(R.drawable.pause); 

    } 
}); 


Maintenant, dans cet écouteur redémarrer la chanson, comme ci-dessous. Et si elle a besoin de réinitialiser la source de données, bien, alors faites-le, comme ci-dessous

mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
    @Override 
    public void onCompletion(MediaPlayer mediaPlayer) { 


    // if data-source setting is required: 
    // 
    // try { 
    //  mp.setDataSource(url); 
    //  mp.prepare(); 
    // } catch (IOException e) { 
    //  e.printStackTrace(); 
    // } 
     mediaPlayer.start(); 

    } 
});