为了账号安全,请及时绑定邮箱和手机立即绑定

Android MediaPlayer停止播放

Android MediaPlayer停止播放

慕妹3242003 2019-12-15 12:12:08
我正在创建包含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();            }        });    }}希望如果有什么更好的代码,可以使用多个按钮数组或东西不检查每个按钮和球员的每一次
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

要停止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();

    }



查看完整回答
反对 回复 2019-12-16
?
慕慕森

TA贡献1856条经验 获得超17个赞

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




查看完整回答
反对 回复 2019-12-16
  • 3 回答
  • 0 关注
  • 499 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信