Alex Salgado
Alex Salgado

Reputation: 35

Stopping audio from playing to play other audio

Here is a code sample

of what I'm trying to accomplish, I've also tried an if statement, where I tested, if the mp.isplaying() and did mp.stop but no luck. this is all within the main class of the project. I do not have anything in the oncreate method

public class MainActivity extends AppCompatActivity {

MediaPlayer mp;

public void buttonTapped(View view){

    int id = view.getId();
    String ourId = "";
    ourId = view.getResources().getResourceEntryName(id);

    int resourceId = getResources().getIdentifier(ourId, "raw", getPackageName());

    mp = MediaPlayer.create(this, resourceId);
    mp.start();
    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            mp.release();
        }
    });
  //  Log.i("Stuff", viewId);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

}

Upvotes: 1

Views: 68

Answers (3)

Arun Shankar
Arun Shankar

Reputation: 2295

The code within * * should get the problem solved.

public void buttonTapped(View view){

    int id = view.getId();
    String ourId = "";
    ourId = view.getResources().getResourceEntryName(id);

    int resourceId = getResources().getIdentifier(ourId, "raw", getPackageName());



 ***if(mp!=null){
         mp.release();
         mp=null;
         }***

    mp = MediaPlayer.create(this, resourceId);
    mp.start();
    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            mp.release();
        }
    });
  //  Log.i("Stuff", viewId);
}

Upvotes: 1

Dany
Dany

Reputation: 71

Try below code :-

try
{
MediaPlayer mp = new MediaPlayer(); mp.setDataSource(birdsUrlList.get(position).getUrl_audio());
mp.prepare();
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) { mp.stop()
mp.release();
}
});
//startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(birdsUrlList.get(position).getUrl_video()))); } catch (Exception e) { e.printStackTrace(); } }

Upvotes: 0

Dany
Dany

Reputation: 71

In setOnCompletionListener you have released mp , also add mp = null.

Upvotes: 0

Related Questions