eclipse
eclipse

Reputation: 1

stop playing audio when another one starts playing android studio Java

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

Answers (1)

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

Related Questions