Android-mediaplayer stop and start

I'm creating Android application contains 2 buttons, on click on each button play a mp3 file. The problem is when I play button1 it plays sound1, when I click button2 it plays sound2.

I check on each button the other player if it's working and I stop it and play the clicked one

But If I click on same button twice it's keep first audio playing in the background and play another one again

I tried to check isPlaying() and to stop it, but it doesn't work!

I want If I click on button1 it play sound1 and if clicked on it again it stop it and play it again from beginning.

My code:

package com.hamoosh.playaudio; import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.TextView; public class PlayaudioActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b= (Button) findViewById(R.id.button1); Button b2= (Button) findViewById(R.id.button2); final TextView t= (TextView) findViewById(R.id.textView1); final MediaPlayer mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.far); final MediaPlayer mp1 = MediaPlayer.create(PlayaudioActivity.this, R.raw.beet); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mp1.isPlaying()) { mp1.stop(); } mp.start(); } }); b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mp.isPlaying()) { mp.stop(); } mp1.start(); } }); } }

Hope if there any better code that can use multiple buttons as an array or something to not check each button and player every time.

Question&Answers:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视