簡體   English   中英

Android:當我單擊時按鈕不會更改為暫停狀態

[英]Android: button is not changing to pause state when i click

我已經為媒體播放器編碼,並且正在播放歌曲。在前端,僅使用圖像按鈕並將其硬編碼為播放按鈕

當我再次單擊時,它必須將圖像更改為暫停狀態,但是每當我單擊它時,我使用的按鈕就會同時播放歌曲兩次,這是錯誤的

但是我需要暫停歌曲,所以無論我在哪里使用

mp.start();

功能將開始從網址播放音樂,我將代碼添加為

if(!mp.isPlaying()){
mp.start();
buttonPlayPause.setBackgroundResource(R.drawable.pause);
}else {
mp.pause();
buttonPlayPause.setBackgroundResource(R.drawable.play);}

但是,當我單擊“播放”按鈕時,它將開始播放;如果再次單擊該按鈕,它將同時開始播放兩次

請幫助我如何啟動和暫停已在url中顯示的mp3文件,否則不會阻塞自身,如果我使用其他功能

該項目的完整代碼是

public class MainActivity5 extends Activity implements OnClickListener,
OnPreparedListener, OnErrorListener, OnCompletionListener {



MediaPlayer mp;
ProgressDialog pd;
Button bt;
ImageButton iv;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main5);
iv = (ImageButton)findViewById(R.id.play);
iv.setOnClickListener(this);}
@Override
public void onPrepared(MediaPlayer mp) 
 {
   Log.i("StreamAudioDemo", "prepare finished");
   //pd.setMessage("Playing.....");
   //mp.start();

   /*if(mp.isPlaying()== true)
   {
       mp.start();
       iv.setImageResource(R.drawable.pause);
   }
   else 
   {
       mp.pause();
       mp.release();
       iv.setImageResource(R.drawable.play);
   }*/

}
@Override
 public void onClick(View v) {

   try
    {
        pd = new ProgressDialog(this);
        pd.setMessage("Buffering.....");
        //pd.show();
        mp = new MediaPlayer();
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mp.setOnPreparedListener(this);
        mp.setOnErrorListener(this);
        mp.setDataSource("http://192.168.1.138/Android/music/vande.mp3");
        mp.prepareAsync();
        mp.setOnCompletionListener(this);
    }
    catch(Exception e)
    {
        Log.e("StreamAudioDemo", e.getMessage());
    }
}

@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
  pd.dismiss();
  return false;
}

@Override
public void onCompletion(MediaPlayer mp) {
    pd.dismiss();
    Toast.makeText(getApplicationContext(), "Completed", Toast.LENGTH_LONG).show();     
}}

謝謝你的幫助

我已經在上面注釋了一些代碼,我必須重新更正它

您可以在您的onclickListener上嘗試一下,在播放該播放器時,如果要暫停播放,則應調用MediaPlayer.pause(),如果要釋放它的數據,則可以調用MediaPlayer.release(),然后,您可以播放下一個音樂。

用這個

public void onPrepared(MediaPlayer mp) 
 {
   Log.i("StreamAudioDemo", "prepare finished");
   //pd.setMessage("Playing.....");

// mp.start(); - this should be removed 
   if(mp.isPlaying()== true)
   {
     mp.pause();

       iv.setImageResource(R.drawable.pause);
   }
   else 
   {
      mp.start();
       mp.release();
       iv.setImageResource(R.drawable.play);
   }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM