Android MediaPlayer停止播放

我正在创建包含2个按钮的Android应用程序,单击每个按钮可播放mp3文件。问题是当我播放button1它时sound1,当我单击button2它播放时sound2。


我检查每个按钮是否在其他播放器上,然后停下来播放被点击的播放器


但是,如果我两次单击同一按钮,则会使第一个音频在后台播放,然后再次播放另一个


我试图检查isPlaying()并阻止它,但是它不起作用!


我想要如果我单击button1它播放sound1,如果再次单击它,它将停止播放并从头开始播放。


我的代码:


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();

            }

        });

    }

}

希望如果有什么更好的代码,可以使用多个按钮数组或东西不检查每个按钮和球员的每一次


慕妹3242003
浏览 453回答 3
3回答

陪伴而非守候

要停止Media Player而不会出现非法状态异常的风险,您必须  try {        mp.reset();        mp.prepare();        mp.stop();        mp.release();        mp=null;       }  catch (Exception e)         {           e.printStackTrace();         }而不只是try {       mp.stop();       mp.release();       mp=null;    } catch (Exception e)     {      e.printStackTrace();    }

慕慕森

根据MediaPlayer您可以在Android API指南中查看的生命周期,我认为您必须调用reset()而不是stop(),然后从头开始再次准备媒体播放器(仅使用一个)播放声音。还请考虑声音可能已经结束。因此,我还建议实施setOnCompletionListener()以确保如果您再次尝试播放声音,它不会失败。
打开App,查看更多内容
随时随地看视频慕课网APP