I created a MediaPlayer with 21 play buttons and a stop button to control all. I also set loop to continous playback. When a user press a play button and later another play button. The mediaplayer refuse to stop. Please rescue me. Thanks! again in anticipation for your help
The below is what I have done that didn't work
This is the PopUpMenuWindow.class
public class PopUpMenuWindowActivity extends AppCompatActivity implements View.OnClickListener {
ImageButton StopButton;
private static MediaPlayer mp;
private Intent mediaServiceIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pop_up_menu_window);
final DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int hight = displayMetrics.heightPixels;
getWindow().setLayout((int)(width*.9), (int)(hight*.8));
WindowManager.LayoutParams params = getWindow().getAttributes();
params.gravity = Gravity.CENTER;
params.x = 0;
params.y = -20;
getWindow().setAttributes(params);
// Dismiss popUpMenu Window
ImageButton backButton = (ImageButton) findViewById(R.id.back_arrow);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
//Get button views IDs
//Get button views IDs
StopButton = (ImageButton) findViewById(R.id.stop);
findViewById(R.id.play_1).setOnClickListener(this);
findViewById(R.id.play_2).setOnClickListener(this);
findViewById(R.id.play_3).setOnClickListener(this);
findViewById(R.id.play_4).setOnClickListener(this);
findViewById(R.id.play_5).setOnClickListener(this);
findViewById(R.id.play_1a).setOnClickListener(this);
findViewById(R.id.play_2a).setOnClickListener(this);
findViewById(R.id.play_3a).setOnClickListener(this);
findViewById(R.id.play_4a).setOnClickListener(this);
findViewById(R.id.play_5a).setOnClickListener(this);
findViewById(R.id.play_1b).setOnClickListener(this);
findViewById(R.id.play_2b).setOnClickListener(this);
findViewById(R.id.play_3b).setOnClickListener(this);
findViewById(R.id.play_4b).setOnClickListener(this);
findViewById(R.id.play_5b).setOnClickListener(this);
findViewById(R.id.play_6b).setOnClickListener(this);
findViewById(R.id.play_1c).setOnClickListener(this);
findViewById(R.id.play_2c).setOnClickListener(this);
findViewById(R.id.play_3c).setOnClickListener(this);
findViewById(R.id.play_4c).setOnClickListener(this);
findViewById(R.id.play_5c).setOnClickListener(this);
findViewById(R.id.play_6c).setOnClickListener(this);
findViewById(R.id.play_1d).setOnClickListener(this);
findViewById(R.id.play_2d).setOnClickListener(this);
findViewById(R.id.play_3d).setOnClickListener(this);
findViewById(R.id.play_4d).setOnClickListener(this);
mediaServiceIntent = new Intent(getApplicationContext(), MediaplayerService.class);
}
@Override
public void onClick(View view) {
switch (view.getId()){
// First row MediaPlayer buttons
case R.id.play_1:
startService(new Intent(getApplicationContext(), MediaplayerService.class));
finish();
break;
case R.id.play_2:
mp = MediaPlayer.create(this, R.raw.track2);
finish();
break;
case R.id.play_3:
mp = MediaPlayer.create(this, R.raw.track3);
finish();
break;
case R.id.play_4:
mp = MediaPlayer.create(this, R.raw.track4);
finish();
break;
case R.id.play_5:
mp = MediaPlayer.create(this, R.raw.track5);
finish();
break;
// Second row MediaPlayer buttons
case R.id.play_1a:
mp = MediaPlayer.create(this, R.raw.track6);
finish();
break;
case R.id.play_2a:
mp = MediaPlayer.create(this, R.raw.track7);
finish();
break;
case R.id.play_3a:
mp = MediaPlayer.create(this, R.raw.track8);
finish();
break;
case R.id.play_4a:
mp = MediaPlayer.create(this, R.raw.bell2);
finish();
break;
case R.id.play_5a:
mp = MediaPlayer.create(this, R.raw.track9);
finish();
break;
// Third row MediaPlayer buttons
case R.id.play_1b:
mp = MediaPlayer.create(this, R.raw.track10);
finish();
break;
case R.id.play_2b:
mp = MediaPlayer.create(this, R.raw.track11);
finish();
break;
case R.id.play_3b:
mp = MediaPlayer.create(this, R.raw.track12);
finish();
break;
case R.id.play_4b:
mp = MediaPlayer.create(this, R.raw.track13);
finish();
break;
case R.id.play_5b:
mp = MediaPlayer.create(this, R.raw.track14);
finish();
break;
case R.id.play_6b:
mp = MediaPlayer.create(this, R.raw.track15);
finish();
break;
// Fourth row MediaPlayer buttons
case R.id.play_1c:
mp = MediaPlayer.create(this, R.raw.track16);
finish();finish();
break;
case R.id.play_2c:
mp = MediaPlayer.create(this, R.raw.track17);
finish();
break;
case R.id.play_3c:
mp = MediaPlayer.create(this, R.raw.track18);
finish();
break;
case R.id.play_4c:
mp = MediaPlayer.create(this, R.raw.track19);
finish();
break;
case R.id.play_5c:
mp = MediaPlayer.create(this, R.raw.track20);
finish();
break;
case R.id.play_6c:
mp = MediaPlayer.create(this, R.raw.track21);
finish();
break;
// Fifth row MediaPlayer buttons
case R.id.play_1d:
mp = MediaPlayer.create(this, R.raw.track22);
finish();
break;
case R.id.play_2d:
mp = MediaPlayer.create(this, R.raw.track23);
finish();
break;
case R.id.play_3d:
mp = MediaPlayer.create(this, R.raw.track24);
finish();
break;
case R.id.play_4d:
mp = MediaPlayer.create(this, R.raw.track25);
finish();
break;
default:
return;
}
mp.start();
mp.setLooping(true);
}
public void stop(View v) {
startService(new Intent(getApplicationContext(), MediaplayerService.class));
}
}
onClick on each button you have to check each of the player just like that it will pause the other player and play the audio of the clicked button
if (player09==null){
player09=MediaPlayer.create (this,R.raw.twentytwo);
player09.setOnCompletionListener (new MediaPlayer.OnCompletionListener () {
@Override
public void onCompletion(MediaPlayer mp) {
player09.pause ();
}
});
}
if(player02 != null)
player02.pause();
if(player03 != null)
player03.pause();
if(player04 != null)
player04.pause();
if(player05 != null)
player05.pause();
if(player06 != null)
player06.pause();
if(player07 != null)
player07.pause();
if(player08 != null)
player08.pause();
if(player01 != null)
player01.pause();
player09.start ();
player09.setLooping (true);
and then onStop button you have to check like that
if(this.player01!=null){
player01.pause ();
//Toast.makeText (this,"8kHz Stop",Toast.LENGTH_SHORT).show ();
}
if (this.player02!=null){
player02.pause ();
//Toast.makeText (this,"10kHz Stop",Toast.LENGTH_SHORT).show ();
}
if (this.player03!=null){
player03.pause ();
//Toast.makeText (this,"12kHz Stop",Toast.LENGTH_SHORT).show ();
}
if (this.player04!=null){
player04.pause ();
//Toast.makeText (this,"14kHz Stop",Toast.LENGTH_SHORT).show ();
}
if (this.player05!=null){
player05.pause ();
//Toast.makeText (this,"16kHz Stop",Toast.LENGTH_SHORT).show ();
}
if (this.player06!=null){
player06.pause ();
//Toast.makeText (this,"17kHz Stop",Toast.LENGTH_SHORT).show ();
}
if (this.player07!=null){
player07.pause ();
//Toast.makeText (this,"20kHz Stop",Toast.LENGTH_SHORT).show ();
}
if (this.player08!=null) {
player08.pause ();
//Toast.makeText (this,"21kHz Stop",Toast.LENGTH_SHORT).show ();
}
if (this.player09!=null){
player09.pause ();
//Toast.makeText (this,"24kHz Stop", Toast.LENGTH_SHORT).show ();
}
you can stop the player or pause that may help you with single button click to stop the audio