Android 在另一个按钮上停止播放mp3,单击并退出页面

Android 在另一个按钮上停止播放mp3,单击并退出页面,android,mp3,ondestroy,Android,Mp3,Ondestroy,我已经尝试了所有的例子,我可以在这个网站上找到,但我似乎无法让它工作。 我需要它,这样,如果一个mp3文件是由按下一个按钮启动的,如果另一个按钮被按下,那么以前的mp3停止,新的开始 我还需要它在离开页面导航时停止 有人能看出我可能做错了什么吗 import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; imp

我已经尝试了所有的例子,我可以在这个网站上找到,但我似乎无法让它工作。 我需要它,这样,如果一个mp3文件是由按下一个按钮启动的,如果另一个按钮被按下,那么以前的mp3停止,新的开始

我还需要它在离开页面导航时停止

有人能看出我可能做错了什么吗

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

    public class buttontofirstaidaed extends Activity implements OnClickListener{
        private MediaPlayer mp1;
        private MediaPlayer mp2;
        private MediaPlayer mp3;
        private MediaPlayer mp4;
        private MediaPlayer mp5;
        private MediaPlayer mp6;

        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.firstaidaed);
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        Button buttonaed1=(Button)findViewById(R.id.button_aed1);
        Button buttonaed2=(Button)findViewById(R.id.button_aed2);
        Button buttonaed3=(Button)findViewById(R.id.button_aed3);
        Button buttonaed4=(Button)findViewById(R.id.button_aed4);
        Button buttonaed5=(Button)findViewById(R.id.button_aed5);
        Button buttonaed6=(Button)findViewById(R.id.button_aed6);

        buttonaed1.setOnClickListener(this);
        buttonaed2.setOnClickListener(this);
        buttonaed3.setOnClickListener(this);
        buttonaed4.setOnClickListener(this);
        buttonaed5.setOnClickListener(this);
        buttonaed6.setOnClickListener(this);

    }

    public void onClick(View v) {
        int resId1;
        int resId2;
        int resId3;
        int resId4;
        int resId5;
        int resId6;

        switch (v.getId()) {

        case R.id.button_aed1:
            resId1 = R.raw.aed1;
            if(mp1!=null) { mp1.release(); } mp1 = MediaPlayer.create(this, resId1); mp1.start();
            break;

        case R.id.button_aed2:
            resId2 = R.raw.aed2;
            if(mp2!=null) { mp2.release(); } mp2 = MediaPlayer.create(this, resId2); mp2.start();
            break;

        case R.id.button_aed3:
            resId3 = R.raw.aed3;
            if(mp3!=null) { mp3.release(); } mp3 = MediaPlayer.create(this, resId3); mp3.start();
            break;

        case R.id.button_aed4:
            resId4 = R.raw.aed4;
            if(mp4!=null) { mp4.release(); } mp4 = MediaPlayer.create(this, resId4); mp4.start();
            break;

        case R.id.button_aed5:
            resId5 = R.raw.aed5;
            if(mp5!=null) { mp5.release(); } mp5 = MediaPlayer.create(this, resId5); mp5.start();
            break;

        case R.id.button_aed6:
            resId6 = R.raw.aed6;
            if(mp6!=null) { mp6.release(); } mp6 = MediaPlayer.create(this, resId6); mp6.start();
            break;

        }

    }

}

你为什么不在所有声音中使用相同的MediaPlayer呢

然后在每个按钮中单击“停止”,并使用相应的介质再次初始化

看看MediaPlayer的直播周期。第一次看起来很疯狂xD

试试这样的东西

private MediaPlayer genericMediaPlayer = null;
public void onClick(View v) {
    if(genericMediaPlayer == null) {
       genericMediaPlayer = MediaPlayer.create(this);    
    } else {
       genericMediaPlayer.stop();
    }

    FileDescriptor audio = null; 

    switch (v.getId()) {

    case R.id.button_aed1:
        audio = getResources().openRawResourceFd(R.raw.audio1).getFileDescriptor();
        break;

    case R.id.button_aed2:
        audio =getResources().openRawResourceFd(R.raw.audio3).getFileDescriptor();
        break;

    case R.id.button_aed3:
        audio = getResources().openRawResourceFd(R.raw.audio3).getFileDescriptor();
        break;

    case R.id.button_aed4:
        audio = getResources().openRawResourceFd(R.raw.audio4).getFileDescriptor();
        break;

    case R.id.button_aed5:
        audio = getResources().openRawResourceFd(R.raw.audio5).getFileDescriptor();
        break;

    case R.id.button_aed6:
        audio = getResources().openRawResourceFd(R.raw.audio6).getFileDescriptor();
        break;

    }
     if(audio != null){
        genericMediaPlayer.setDataSource(audio);
        genericMediaPlayer.prepare();
        genericMediaPlayer.start();
     }
 }

现在所有问题都解决了,与其他问题的链接解决了问题。感谢您的帮助。

请使用相同的媒体播放器,并在每次单击开始时使用:

if (player!=null) {
    player.stop();
}
player = MediaPlayer.create(this, R.raw.recording);
start();    

请详细说明您的问题您可以为所有Stufhi Koutuk使用一个MediaPlayer(例如,singleton模式)。我有一个名为Firstaided的xml页面。该页面有六个按钮,它们都播放除颤器发出的不同声音。当我点击一个按钮时,mp3开始播放,但如果我点击另一个按钮,第一个声音和第二个声音也会继续播放。如果我离开页面,声音也会继续播放。嗨,sinpin,我不太确定你的意思,我从这个网站的其他页面获取了这个代码,并修改了mp3文件名以满足我的需要。谢谢你们的回复。当我输入代码genericMediaPlayer=MediaPlayer.create(这个);创建操作被下划线为错误。如果我使用eclipse提供的建议修复,页面将打开,但它是空的。对不起,我没有检查它。只需更改MediaPlayer。通过新的MediaPlayer()创建(此);嗯,恐怕那也不行。我需要在底部加一个括号。当我添加括号时,它在genericMediaPlayer.setDataSource(音频)下面加下划线;genericMediaPlayer.prepare();如果我加上拦网,那么声音根本就不会播放。我还必须输入@Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.firstaidaed);才能打开页面。真的很困惑。我用其他代码成功地实现了这一点,但还有一个单独的问题。\\n指向该问题的链接在这里。