我正在創建包含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 回答

幕布斯6054654
TA貢獻1876條經驗 獲得超7個贊
要停止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貢獻1801條經驗 獲得超16個贊
根據MediaPlayer您可以在Android API指南中查看的生命周期,我認為您必須調用reset()而不是stop(),然后從頭開始再次準備媒體播放器(僅使用一個)播放聲音。還請考慮聲音可能已經結束。因此,我還建議實施setOnCompletionListener()以確保如果您再次嘗試播放聲音,它不會失敗。
- 3 回答
- 0 關注
- 2076 瀏覽
添加回答
舉報
0/150
提交
取消