Reputation: 1
I'm new to programming and android studio, and this is my first app. I used MediaPlayer
in my code. And I can't make it so that when I click on one sound, the other stops and the play image changes. I want to make it so that when I click on the play button, other audio stops playing and the picture of play2 changes, etc.
package com.eclipse.diplomproject;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class Case1 extends AppCompatActivity {
ImageView play, play2, play3, play4, play5;
MediaPlayer mediaPlayer, mediaPlayer2 ,mediaPlayer3 ,mediaPlayer4 ,mediaPlayer5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_case1);
mediaPlayer = MediaPlayer.create(Case1.this, R.raw.case1_1);
play= (ImageView) findViewById(R.id.play1);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer.isPlaying()){
mediaPlayer.pause();
play.setImageResource(R.drawable.play_btn);
}
else{
mediaPlayer.start();
play.setImageResource(R.drawable.pause_btn);
}
}
});
mediaPlayer2 = MediaPlayer.create(Case1.this, R.raw.case1_2);
play2 = (ImageView) findViewById(R.id.play2);
play2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer2.isPlaying()){
mediaPlayer2.pause();
play2.setImageResource(R.drawable.play_btn);
}
else{
mediaPlayer2.start();
play2.setImageResource(R.drawable.pause_btn);
}
}
});
mediaPlayer3 = MediaPlayer.create(Case1.this, R.raw.case1_3);
play3 = (ImageView) findViewById(R.id.play3);
play3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer3.isPlaying()){
mediaPlayer3.pause();
play3.setImageResource(R.drawable.play_btn);
}
else{
mediaPlayer3.start();
play3.setImageResource(R.drawable.pause_btn);
}
}
});
mediaPlayer4 = MediaPlayer.create(Case1.this, R.raw.case1_4);
play4 = (ImageView) findViewById(R.id.play4);
play4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer4.isPlaying()){
mediaPlayer4.pause();
play4.setImageResource(R.drawable.play_btn);
}
else{
mediaPlayer4.start();
play4.setImageResource(R.drawable.pause_btn);
}
}
});
mediaPlayer5 = MediaPlayer.create(Case1.this, R.raw.case1_5);
play5 = (ImageView) findViewById(R.id.play5);
play5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer5.isPlaying()){
mediaPlayer5.pause();
play5.setImageResource(R.drawable.play_btn);
}
else{
mediaPlayer5.start();
play5.setImageResource(R.drawable.pause_btn);
}
}
});
}
}
Upvotes: 0
Views: 367
Reputation: 4327
You don't need to create 5 MediaPlayer
to achieve your needs, try this :
public class Case1 extends AppCompatActivity {
ImageView play, play2, play3, play4, play5;
MediaPlayer mediaPlayer;
private boolean isPlay, isPlay2, isPlay3, isPlay4, isPlay5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_case1);
mediaPlayer = new MediaPlayer();
play = (ImageView) findViewById(R.id.play1);
play.setOnClickListener(v -> {
if (isPlay && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
play.setImageResource(R.drawable.play_btn);
} else {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getApplicationContext(), raw2Uri(R.raw.case1_1));
mediaPlayer.prepare();
mediaPlayer.start();
pauseAllPlayers();
play.setImageResource(R.drawable.pause_btn);
} catch (IOException e) {
e.printStackTrace();
}
}
isPlay = true;
isPlay2 = false;
isPlay3 = false;
isPlay4 = false;
isPlay5 = false;
});
play2 = (ImageView) findViewById(R.id.play2);
play2.setOnClickListener(v -> {
if (isPlay2 && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
play2.setImageResource(R.drawable.play_btn);
} else {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getApplicationContext(), raw2Uri(R.raw.case1_2));
mediaPlayer.prepare();
mediaPlayer.start();
pauseAllPlayers();
play2.setImageResource(R.drawable.pause_btn);
} catch (IOException e) {
e.printStackTrace();
}
}
isPlay = false;
isPlay2 = true;
isPlay3 = false;
isPlay4 = false;
isPlay5 = false;
});
play3 = (ImageView) findViewById(R.id.play3);
play3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isPlay3 && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
play3.setImageResource(R.drawable.play_btn);
} else {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getApplicationContext(), raw2Uri(R.raw.case1_3));
mediaPlayer.prepare();
mediaPlayer.start();
pauseAllPlayers();
play3.setImageResource(R.drawable.pause_btn);
} catch (IOException e) {
e.printStackTrace();
}
}
isPlay = false;
isPlay2 = false;
isPlay3 = true;
isPlay4 = false;
isPlay5 = false;
}
});
play4 = (ImageView) findViewById(R.id.play4);
play4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isPlay4 && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
play4.setImageResource(R.drawable.play_btn);
ToastUtils.showLong("PAUSED");
} else {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getApplicationContext(), raw2Uri(R.raw.case1_4));
mediaPlayer.prepare();
mediaPlayer.start();
pauseAllPlayers();
play4.setImageResource(R.drawable.pause_btn);
ToastUtils.showLong("PLAYED");
} catch (IOException e) {
e.printStackTrace();
}
}
isPlay = false;
isPlay2 = false;
isPlay3 = false;
isPlay4 = true;
isPlay5 = false;
}
});
play5 = (ImageView) findViewById(R.id.play5);
play5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isPlay5 && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
play5.setImageResource(R.drawable.play_btn);
} else {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getApplicationContext(), raw2Uri(R.raw.case1_5));
mediaPlayer.prepare();
mediaPlayer.start();
pauseAllPlayers();
play5.setImageResource(R.drawable.pause_btn);
} catch (IOException e) {
e.printStackTrace();
}
}
isPlay = false;
isPlay2 = false;
isPlay3 = false;
isPlay4 = false;
isPlay5 = true;
}
});
}
private Uri raw2Uri(int raw) {
return Uri.parse("android.resource://" + getPackageName() + "/" + raw);
}
private void pauseAllPlayers() {
play.setImageResource(R.drawable.play_btn);
play2.setImageResource(R.drawable.play_btn);
play3.setImageResource(R.drawable.play_btn);
play4.setImageResource(R.drawable.play_btn);
play5.setImageResource(R.drawable.play_btn);
}
}
Upvotes: 1