我正在创建包含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();
}
慕慕森
TA贡献1856条经验 获得超17个赞
根据MediaPlayer您可以在Android API指南中查看的生命周期,我认为您必须调用reset()而不是stop(),然后从头开始再次准备媒体播放器(仅使用一个)播放声音。还请考虑声音可能已经结束。因此,我还建议实施setOnCompletionListener()以确保如果您再次尝试播放声音,它不会失败。
- 3 回答
- 0 关注
- 499 浏览
添加回答
举报
0/150
提交
取消