2017-10-16 1 views
-1

hallo alle ich habe einen media player, der ein lied von url spielt so nach song beende die play toggle um zu stoppen taste ... so will ich immer wenn der knopf wieder geklickt wird, um das lied ein anderes zu spielen Zeit und ich weiß nicht, wie das zu bewerkstelligen. Nach dem Song Ende der Play-Taste wechselt zu Stop-Taste, so dass die Sache nicht wissen, ist, wie Media Player zurücksetzen und setzen Sie Datenquelle wieder so können Sie überprüfen, meinen Code bitte und sagen Sie mir wo es zu platzieren istandroid media player wiederholen song wieder

das ist mein Code hoffe, du hilfst mir und danke.

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

Möchten Sie auf die Schaltfläche erneut klicken und das Lied erneut abspielen? Oder Sie möchten nur, dass sich das Lied wiederholt. – samirk433

+0

Ich möchte das Lied wiedergeben –

Antwort

0

Dies ist Ihr Media-Player Fertigstellung Zuhörer:

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

    } 
}); 


nun in diesem Hörer den Song neu zu starten, wie unten. Und wenn es die Datenquelle zurücksetzen musste, dann tun Sie es, wie unten

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

    } 
});